我有一個Web服務,它使用對System.ServiceModel.Dispatcher.SerializeReply消息的調用(具體爲MultiplexingDispatchMessageFormatter實現)。當我進行這個調用時,我得到一個「Key not found」異常,我追蹤到了System.ServiceModel.Dispatcher.MultiplexingDispatchMessageFormatter中的一行,它試圖根據一個鍵獲取「defaultContentType」。在Web服務中,當我嘗試序列化爲JSON消息時,出現「未找到密鑰」異常
不幸的是我無法看到關鍵是什麼,但defaultContentType集合似乎沒有任何項目。
我需要做些什麼來獲得SerializeReply的工作?
的代碼:
public System.ServiceModel.Channels.Message SerializeReply(System.ServiceModel.Channels.MessageVersion messageVersion, object[] parameters, object result)
{
System.Web.HttpRequest requestMessage = System.Web.HttpContext.Current.Request;
string format = requestMessage.QueryString["format"];
if (!string.IsNullOrEmpty(format) && string.Compare(format, "json", true) == 0)
{
return jsonResponseDispatchMessageFormatter.SerializeReply(messageVersion, parameters, result);
}
//[UNRELATED CODE]
}
這是真實的System.ServiceModel.Dispatcher.MultiplexingDispatchMessageFormatter炸燬線(關鍵是 「JSON」 時,defaultContentTypes沒有入口):
outgoingResponse.ContentType = this.defaultContentTypes[key];
和異常我越來越:
System.Collections.Generic.KeyNotFoundException occurred
Message=The given key was not present in the dictionary.
Source=mscorlib
StackTrace:
at System.ThrowHelper.ThrowKeyNotFoundException()
InnerException:
你可以發佈你正在使用的代碼(你在哪裏調用SerializeReply)和問題的完整異常堆棧嗎? – carlosfigueira
完成,不幸的是,這個例外並不能提供很多信息 – Dugan