討論區快速選單
知識庫快速選單
政府補助!學嵌入式+物聯網 掌握Salesforce雲端管理秘訣
[ 回上頁 ] [ 討論區發言規則 ]
關於WebService對DataTable的支援不足?
更改我的閱讀文章字型大小
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1595 | 人氣 138661 | 評價 2840 | 評價/貼文 1.78 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/12 上午 10:22:07
WebService可以傳回來DataSet
但是

DataTable
卻變成
ExecuteDataTableResponseExecuteDataTableResult



[Serializable]
[DesignerCategory("code")]
[DebuggerStepThrough]
[XmlType(AnonymousType = true)]
[GeneratedCode("System.Xml", "2.0.50727.42")]
public class ExecuteDataTableResponseExecuteDataTableResult
{
public ExecuteDataTableResponseExecuteDataTableResult();

[XmlAnyElement(Order = 0)]
public XmlElement[] Any { get; set; }
[XmlAnyElement(Order = 1)]
public XmlElement Any1 { get; set; }
}

可是

錯誤 13 無法將型別 'MyWebService.ExecuteDataTableResponseExecuteDataTableResult' 隱含轉換為 'System.Data.DataTable'

自己用 (DataTable) 去轉
也變成

錯誤 14 無法將型別 'MyWebService.ExecuteDataTableResponseExecuteDataTableResult' 轉換為 'System.Data.DataTable'

怎麼辦?
DataTable不能用在WebService的傳回值嗎?

可是用DataSet當傳回值
就沒這個問題了
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1595 | 人氣 138661 | 評價 2840 | 評價/貼文 1.78 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/12 上午 11:15:42
又是這種
那為何編譯時
不直接告訴我有問題?

System.InvalidOperationException: 產生 XML 文件時發生錯誤。 ---> System.InvalidOperationException: 無法序列化 DataTable。 未設定 DataTable 名稱。
   於 System.Data.DataTable.WriteXmlSchema(XmlWriter writer, Boolean writeHierarchy)
   於 System.Data.DataTable.System.Xml.Serialization.IXmlSerializable.WriteXml(XmlWriter writer)
   於 System.Xml.Serialization.XmlSerializationWriter.WriteSerializable(IXmlSerializable serializable, String name, String ns, Boolean isNullable, Boolean wrapped)
   於 Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriter1.Write9_DataTable(Object o)
   於 Microsoft.Xml.Serialization.GeneratedAssembly.DataTableSerializer.Serialize(Object objectToSerialize, XmlSerializationWriter writer)
   於 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   --- 內部例外堆疊追蹤的結尾 ---
   於 System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   於 System.Xml.Serialization.XmlSerializer.Serialize(TextWriter textWriter, Object o)
   於 System.Web.Services.Protocols.XmlReturnWriter.Write(HttpResponse response, Stream outputStream, Object returnValue)
   於 System.Web.Services.Protocols.HttpServerProtocol.WriteReturns(Object[] returnValues, Stream outputStream)
   於 System.Web.Services.Protocols.WebServiceHandler.WriteReturns(Object[] returnValues)
   於 System.Web.Services.Protocols.WebServiceHandler.Invoke()
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1595 | 人氣 138661 | 評價 2840 | 評價/貼文 1.78 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/12 上午 11:23:46
System.Data.SqlClient.SqlDataReader
也一樣
無法在WebService上面當傳回值?

害我SPEC寫得那麼爽
結果已經發現至少有
SqlDataReader

DataTable
都不能傳回了

那有什麼DataType可以取代SqlDataReader與DataTable
作為WebService的傳回值嗎?
作者 : regionbbs(小朱)技術副站長 VB.Net曠世奇才SQL Server 7/2K卓越專家.Net Framework優秀好手C#曠世奇才ASP.Net一代宗師ADO.Net卓越專家貼文超過6000則人氣指數超過70000點
[ 貼文 6372 | 人氣 82299 | 評價 36440 | 評價/貼文 5.72 | 送出評價 59 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
主題發起人player註記此篇回應為最佳解答 2007/4/12 下午 01:05:59
老大,之前不就告訴過你 Web Service 不能直接回傳 DataTable 嗎?
要用 DataSet 包起來。

另外 SqlDataReader 內含資料庫執行 SQL 指令時產生的游標,你認為這種游標可以序列化嗎?至少 SqlDataReader 不支援序列化。
作者 : player(PLAYER) 貼文超過1000則人氣指數超過100000點
[ 貼文 1595 | 人氣 138661 | 評價 2840 | 評價/貼文 1.78 | 送出評價 104 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2007/4/12 下午 03:20:11
又問了蠢問題了

提問的智慧 (How To Ask Questions The Smart Way)
http://www.player.idv.tw/prog/index.php?title=%E6%8F%90%E5%95%8F%E7%9A%84%E6%99%BA%E6%85%A7
作者 : showbebe(穿直排輪的猴子)
[ 貼文 3 | 人氣 157 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/12/16 上午 11:55:33
產生 XML 文件時發生錯誤。 ---> System.InvalidOperationException: 無法序列化 DataTable。 未設定 DataTable 名稱。

設定DataTableName名稱就可以了
作者 : a802216(小張)
[ 貼文 15 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2010/12/18 下午 10:38:24
這是因為DataTable沒有提供序列化的功能,導致WebService沒辦法將其當作輸出入參數。

比較建議的做法是採取DataSet.WriteToXML(),再將其XML字串壓縮,以byte[]型態作為輸入參數,否則WebService將成為您系統上線之後的不定時炸彈。
 板主 : 小朱
 > ASP.NET - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - ASP.NET - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
ASP.NET
1 小朱 13300 
2 小台 4940 
3 Peter.huang 3390 
4 王爺 2700 
5 lolota 2010 
6 披著狼皮的羊 1560 
7 識丁 1190 
8 mark 870 
9 ammon 600 
10 Aries 480 
ASP.NET
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2019 程式設計俱樂部 http://www.programmer-club.com.tw/
0.078125