2009-04-09 61 views
1

我不是100%確定什麼是正確的術語,但..爲什麼WCF不能序列化long或int?

我有一個名爲InParams的類有兩個字段,一個字符串和一個長和它們相應的字段的屬性訪問器。它們分別用[DataContract]和[DataMember]裝飾。

我有一個名爲

代理產生的罰款SvcUtil工具,我能夠設置長字段,但是當服務方法是執行長字段無效測試(InParams inParams)WCF服務方法總是0即使我明確地設置了長字段。我看着肥皂信封,沒有看到我長場的標籤。

當我將長字段更改爲字符串字段時,它會被序列化。整數也是一樣。

我是否缺少屬性或其他?

+0

在生成的代理類中是否有一個名爲NameOfYourLongFieldSpecified的布爾屬性? – 2009-04-09 14:38:08

+0

我有同樣的問題,如上所述。反序列化工作正常,直到我將WebAPI框架添加到現有的ASP.NET Web窗體應用程序。 API方法在內部調用服務層中的WCF方法。應用程序的其他部分調用WCF方法進行數據檢索,並且有很多原始值類型。一旦添加了WebAPI框架,反序列化失敗(使用TraceViewer跟蹤請求並且參數的默認值爲0)。刪除了WebAPI框架,一切恢復正常。任何人都面臨這樣的問 – 2016-12-29 06:10:05

+0

@Kwan Cheng。你有沒有找到解決你的問題。沒有什麼似乎爲我的工作,我不得不使用WCF REST框架(webHttpBinding),以適應我的需要,就像後退一步。 – 2016-12-29 06:14:54

回答

2

你可以發佈樣本嗎?雙重檢查:

  • 保證類有[DataContract()]裝修
  • 確保PUBLIC屬性有[數據成員()]裝修

確保您的代理類是最新的去除/再生它。看看這是否有所作爲?

0

除了做Tanner提到的之外,DataContractSerializer顯然支持long和int。

.NET Framework基元類型。 .NET Framework中內置的以下類型都可以被序列化,並被視爲基本類型:Byte,SByte,Int16,Int32,Int64,UInt16,UInt32,UInt64,Single,Double,Boolean,Char,Decimal,Object和串。 Link

相關問題