2014-02-09 82 views
0

我使用wcf創建了一個休息服務。 我正在編寫一個服務方法內的實體框架代碼來從數據庫中獲取數據。調用兩次的服務方法

每次來自瀏覽器的調用都會觸發兩次或三次服務方法。 我發現方法中沒有例外。我之前遇到過同樣的問題,並解決了將DataContract屬性添加到所有模型(現在不幫助)的問題。

可能的原因是什麼?請幫忙。

問候 阿希什

+0

[您是否嘗試過使用WCF診斷](http://msdn.microsoft.com/en-us/library/ms733025(v = vs.110).aspx)? –

回答

3

跟蹤Web服務是從開始點。

1.-添加以下到Web.config在您的WCF項目:

<system.diagnostics> 
<trace autoflush="true"> 
</trace> 
<sources> 
    <source name="System.ServiceModel" 
      switchValue="Information, ActivityTracing" 
      propagateActivity="true"> 
     <listeners> 
      <add name="sdt" 
       type="System.Diagnostics.XmlWriterTraceListener" 
       initializeData="WcfDetailTrace.e2e" /> 
     </listeners> 
    </source> 
</sources> 

然後執行你的服務,並簽出項目中的文件「WcfDetaiTrace.e2e」的內容文件夾,它是一個XML文件。這樣你會很容易發現你的服務有什麼問題。存在的主要問題涉及:

  1. 缺少DataContracts/KnownTypes
  2. 日期時間序列化異常(溢)
  3. 使用錯誤的動詞訪問REST條目(GET,但應該是POST,PUT或DELETE)

希望它有幫助。

+0

太好了。它真的有幫助,否則你不知道,WTH會造成麻煩。 – Zeeshan

+0

什麼會引起我的興趣:當序列化出現問題時,爲什麼第二次調用該方法?我沒有看到兩次執行代碼的好處。另外:是否可以禁用該行爲,以避免執行該方法兩次,只要序列化失敗就會拋出錯誤? – NineBerry

1

有時候它會錯誤地序列化數據約定,這就是爲什麼它調用兩次相同的方法。請檢查您的數據合同類是否有重複的屬性或任何其他問題。