簡體   English   中英

WCF“字典中不存在給定的鍵”

[英]WCF “The given key was not present in the dictionary”

即使我沒有使用字典,也遇到了這個錯誤,奇怪的是它是在我致電服務時。

wsSoapClient client = null;
try
{
    client = new wsSoapClient();
}
catch (Exception ex)
{ 
    // - Error in the web.config
}

try
{
    SendData sendData = new SendData();
    sendData.finishDate = myVar.FinishDate;
    sendData.startDate = myVar.StartDate;
    // - Other fields

    // - This lines throw the error below
    ClientResult result = client.FinishCourse(sendData);
}
catch (Exception ex)
{
    // - Message: The given key was not present in the dictionary.
}

堆棧跟蹤:

StackTrace: at System.Collections.Generic.Dictionary``2.get_Item(TKey key) at Project.Model.CourseService.FinishCourse(XmlNode node)

該服務是最新的,我在其他任何地方都找不到此信息。 在SO上有兩個類似的問題,但它們與Silverlight有關,我無法弄清楚它(常規C#WCF調用服務)與解決方案之間的關系。

是什么原因造成的,我該如何解決?

(編輯)更多信息 :綁定是basicHttpBinding,僅http。

編輯²WSDL

編輯³ :發現問題。 顯然,已經存在另一個錯誤(該值大於字段允許的值),該服務正在返回錯誤,但由於某種原因,WCF並未將其視為錯誤並且沒有引發異常,我猜是它嘗試正常進行,導致此字典錯誤,因為XML不是預期的。

假設您的服務方法不是拋出異常的方法,那么在服務端發生的肥皂消息(即請求對象)的反序列化可能就是這種情況。

檢查您的代碼(或wsdl)中的SendData,並查看是否存在未在請求對象(即sendData對象)中設置的不可為空的屬性。 缺少必需的屬性可能會在反序列化期間引起問題。

發布SendData和/或FinishCourse服務方法的代碼對於分析可能的問題非常有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM