2017-06-22 88 views
3

我有一些新的WCF服務,一些現有的客戶端需要能夠與之通信。WCF SOAP服務忽略內容類型字符集

有一些客戶端錯誤地發送SOAP請求,其Content-Type標頭爲'text/xml;字符集= US-ASCII」。目前,客戶本身不能改變。

當他們發送一個請求,他們得到了錯誤消息:

HTTP/1.1 415無法處理消息,因爲內容類型 「文本/ XML的; charset = us-ascii'不是預期的類型'text/xml; 的charset = UTF-8'

有什麼辦法來指示WCF服務忽略的內容類型的字符集,並假設UTF-8?

+0

也許https://開頭的社會.msdn.microsoft.com/Forums/vstudio/zh-CN/c1a29404-c990-482a-901f-dbfdf0d8f270/how-to-config-wcf-service-to-accept-non-unicode-encoding?forum = wcf –

+0

https:/ /docs.microsoft.com/en-us/dotnet/framework/wcf/extending/custom-encoders –

+1

@KScandrett這,再加上與該論壇帖子上接受的答案的作者談話做了伎倆。 – DavidGouge

回答

0

這可能對您有所幫助,如果不是,我會刪除答案。我認爲這可以在你的情況下使用,但我不太確定,因爲沒有其他細節。

WebContentTypeMapper可用於覆蓋正在發送的內容類型。這是削減WCF採樣集中使用的代碼。在這個例子中,它會接收任何發送的內容類型並將其映射到json,但您可以根據需要進行調整。

如果你沒有它已經可以從WCF Samples 此示例位於..WF_WCF_Samples \ WCF \擴展下載Samples \阿賈克斯\ WebContentTypeMapper \ CS

using System.ServiceModel.Channels; 

namespace Microsoft.Samples.WebContentTypeMapper 
{ 
    public class JsonContentTypeMapper : System.ServiceModel.Channels.WebContentTypeMapper 
    { 
     public override WebContentFormat GetMessageFormatForContentType(string contentType) 
     { 
      if (contentType == "text/javascript") 
      { 
       return WebContentFormat.Json; 
      } 
      else 
      { 
       return WebContentFormat.Default; 
      } 
     } 
    } 
}