1. 程式人生 > >WebService生成XML文件時出錯。不應是型別XXXX。使用XmlInclude或SoapInclude屬性靜態指定非已知的型別。

WebService生成XML文件時出錯。不應是型別XXXX。使用XmlInclude或SoapInclude屬性靜態指定非已知的型別。

 

情況是這樣的有自定義的3個類,House、SaleHouse、RentHouse。SaleHouse和RentHouse是House類的子類。在WebService中有一個方法是返回House類。

1 [WebMethod]
2 public House Get(int houseId)
3 {
4 return House.Get(houseId);
5 } 複製程式碼

除錯報錯如下:

System.InvalidOperationException: 生成 XML 文件時出錯。 ---> 
System.InvalidOperationException: 
不應是型別 YajukeLib.Housing.SaleHouse。
使用 XmlInclude 或 SoapInclude 屬性靜態指定非已知的型別。

在網上查了一下資料,說是要使用屬性XmlIncludeAttribute。然後將[XmlInclude(typeof(House))]加到House類和WebService中。還是報上述的錯誤。加[Serializable]也不管用。

又在MSDN上查詢XmlIncludeAttribute的定義如下:允許 XmlSerializer 在它序列化或反序列化物件時識別型別。所以我想是因為方法返回的型別其實是House類的子類,XmlSerializer在序列化時只能識別父類,而不能識別子類,所以導致序列化的錯誤。所以我將[XmlInclude(typeof(SaleHouse))]和[XmlInclude(typeof(RentHouse))]同時加到WebService中,問題解決。

[XmlInclude(typeof(SaleHouse))]
[XmlInclude(
typeof(RentHouse))]publicclass HouseService : System.Web.Services.WebService

相關推薦

WebService生成XML出錯型別XXXX使用XmlIncludeSoapInclude屬性靜態指定型別

  情況是這樣的有自定義的3個類,House、SaleHouse、RentHouse。SaleHouse和RentHouse是House類的子類。在WebService中有一個方法是返回House類。 1 [WebMethod]2 public House Get(in

WebService生成XML出錯是類型XXXX使用XmlIncludeSoapInclude屬性靜態指定的類型

ces 錯誤 ali lse pub col ebs single .get 情況是SingleRoom和DoubleRoom是Room類的子類。在WebService中有一個方法是返回Room類。 public Room Get(int roomId) { re

生成 XML 出錯使用 XmlInclude SoapInclude 特性靜態指定型別

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using

對訊息 的正文進行序列化出錯:“生成 XML 出錯

c# 執行儲存過程時報錯:對訊息  的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable();

對訊息 的正文進行序列化出錯:“生成 XML 出錯

c# 執行儲存過程時報錯:對訊息  的正文進行序列化時出錯:“生成 XML 文件時出錯。” 原因是在執行儲存過程時傳遞的裡面包含有表,但是我沒有給表命名。 解決方法是給宣告的表命名: DataTable I_AnnexTable = GetI_AnnexTable()

WebService 在傳回 ArrayList 說: XML 出錯

System.InvalidOperationException: 生成 XML 文件時出錯。 ---> System.InvalidOperationException: CProxyTypeSpace_EntityRoleEntity_NHibernate_Prox

webservice 傳輸Xml的XmlDocument會被直接轉化成XmlNode 想要把它轉回到XmlDocument採用如下變紅的方法

[WebMethod] public XmlDocument GetXmlDocument() { // Create an XmlDocument object. XmlDocument xmlDocumentObject = new XmlDocument(); XmlDocumentObject.Lo

java 生成 xml

new output org enc class 註意 created ear str   解析會了,那接著來學學生成~   同樣的引入依賴: import java.io.File; import java.io.FileOutputStream; import or

使用多個項目生成Xml來顯示幫助

spa 的人 ber this blog -i 項目 對比 方便 終於到這了,我們首先將Product單獨作為一個項目 WebAPI2PostMan.WebModel 並引用他,查看文檔如下。 你會發現,你的註釋也就是屬性的描述沒有了。打開App_Data/XmlDocu

android 中生成xml

android 寫xml文件 在Android中生成xml文件真的很簡單,下面提供2中方法,一種是通過String寫入到文件,另外一種是通過XML 的 XmlSerializer.以後遇到Android寫xml內容就不會困惑了1、通過string寫入文件 String name=mEtName.

Mybatis自動生成Xml,針對字段類型為text等會默認產生XXXXWithBlobs的方法問題

div 生成xml文件 處理 pre cnblogs href 字段 默認 mybatis 默認情況下產生的Mapper.xml裏面存在: 需要修改generatorConfiguration.xml,裏面的table加屬性,如: <t

省廳報7.0 讀取mdb 生成xml

tel long {0} datetime fda string console .get exceptio using System;using System.Collections.Generic;using System.Data;using System.Data.

SQL server 導出平面出錯: The code page on Destination - 3_txt.Inputs[Flat File Destination Input].Columns[UserId] is 936 and is required to be 1252.

log 解決辦法 驗證 AI inpu image ans post BE 我在導出平面文件時:Error 0xc00470d4: Data Flow Task 1: The code page on Destination - 3_txt.Inputs[Flat File

eclipse中如何設置在新建JSP/XML指定編碼UTF-8?

cli Language family ref 發現 encoding 需要 unicode tty eclipse新建jsp文件默認字符編碼為ISO-8859-1,很煩人,每次都需要更改 <%@ page language="java" contentType=

安卓使用StringBuffer和FileOutputStream生成xml

該程式是在安卓中點選生成xml按鈕,在sdcard生成一個名為smsbackup的xml文件 佈局就不多說了,先在存放java的資料夾中新建一個Sms類用來宣告變數 Sms程式碼如下: package com.example.createxmlv1; public class Sm

dom4j生成xml

format doc bsp xml文件 out ted 通過 package orm 1 package xml; 2 3 import java.io.FileWriter; 4 import java.io.IOException; 5 import ja

Dom4j解析和生成XML

一、前言     dom4j是一套非常優秀的java開源api,主要用於讀寫xml文件,具有效能優異、功能強大、和非常方便使用的特點。   另外xml經常用於資料交換的載體,像呼叫webservice傳遞的引數,以及資料做同步操作等等,   所以使用dom4

Xml—dom4j解析以及寫入xml的亂碼問題

book.xml <?xml version="1.0" encoding="UTF-8"?> <書架>   <書>     <書名>Java就業基礎教程</書名>      <作者>張孝祥</作者

Java解析XML生成XML

mysq for 二進制 根據 port des void pub pack XML是eXtensible Markup Language(可擴展標記語言)的簡寫形式,它是一種元標記語言(meta-markup language),也就是說它沒有一套能夠適用於各個領域中所

根據xsd生成xml的c#實現(轉)

using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebControls;us