2012-09-28 42 views
1

是否可以重寫WCF中的設置以防止響應字符串中的HTML編碼字符?阻止WCF在響應中編碼字符串?

我有一個簡單的服務,通過SOAP調用由第三方工具調用。響應對象有一個由包含XML的字符串組成的屬性。當WCF包起來的反應,就變成:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<HttpPostResponse xmlns="http://ws.lenderprise.com"> 
    <HttpPostResult> 
    &lt;STAT xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; &gt; 
     &lt;RESPONSE Attr1=&quot;1&quot; 
      Attr2=&quot;ABC&quot; 
     &lt;/RESPONSE&gt; 
    &lt;/STAT&gt; 
    </HttpPostResult> 
</HttpPostResponse> 

是否有可能沒有包含字符串編碼?

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<HttpPostResponse xmlns="http://ws.lenderprise.com"> 
    <HttpPostResult> 
    <STAT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > 
     <RESPONSE Attr1="1" 
      Attr2="ABC"> 
     </RESPONSE> 
    </STAT> 
    </HttpPostResult> 
</HttpPostResponse> 

我明白這仍然讓我上了鉤,以確保任何嵌入式字符被處理,這意味着仍然在接收端的考慮。

回答

2

如果要返回XML而不是字符串,則可以使用XElementXmlElement作爲返回類型。在這種情況下,它不會被編碼爲一個字符串。

+0

我們可以防止響應字符串參數的HTMLEncoding? –

+1

是的,但不容易;您需要使用自定義消息格式器(在CLR對象(本例中爲字符串)和WCF消息之間進行轉換的組件)。如果您想嘗試該路線,那麼http://blogs.msdn.com/b/carlosfigueira/archive/2011/05/03/wcf-extensibility-message-formatters.aspx上的帖子提供了更多關於它的信息。 – carlosfigueira