C# WCF服务在特殊字符上失败

C# WCF服务在特殊字符上失败,c#,.net,wcf,character-encoding,C#,.net,Wcf,Character Encoding,我有一个C#WCF服务正在运行,它需要接受ISO-8859-1中的消息。除非有人发送包含特殊字符的消息,如ä或ö,否则一切正常 如果对字符进行编码(ä到\344或ä;),一切正常,但发件人坚持认为,如果消息是ISO-8859-1,则不需要转义 更具体地说,这是可行的(简化示例): A. (当然,由于语法无效,会引发另一个异常,但传输本身没有问题) 这不起作用: <?xml version="1.0" encoding="utf-8"?> <soap:Envelope

我有一个C#WCF服务正在运行,它需要接受ISO-8859-1中的消息。除非有人发送包含特殊字符的消息,如
ä
ö
,否则一切正常

如果对字符进行编码(
ä
\344
ä;
),一切正常,但发件人坚持认为,如果消息是ISO-8859-1,则不需要转义

更具体地说,这是可行的(简化示例):


A.
(当然,由于语法无效,会引发另一个异常,但传输本身没有问题)

这不起作用:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    ä
  </soap:Body>
</soap:Envelope>

ä
并抛出一堆神秘的错误消息,这些消息毫无意义:

<ExceptionType>System.ServiceModel.CommunicationException, System.ServiceModel, ...</ExceptionType>
<Message>The I/O operation has been aborted because of either a thread exit or an application request</Message>
...
<ExceptionType>System.ServiceModel.CommunicationException, System.ServiceModel, ...</ExceptionType>
<Message>An operation was attempted on a nonexistent network connection</Message>
System.ServiceModel.CommunicationException,System.ServiceModel。。。
由于线程退出或应用程序请求,I/O操作已中止
...
System.ServiceModel.CommunicationException,System.ServiceModel。。。
尝试在不存在的网络连接上执行操作
我尝试使用空App.config运行该服务,但问题仍然存在,因此我非常确定问题不在于我创建该服务的方式,而在于WCF如何处理消息。将编码更改为UTF-8也没有帮助


你知道为什么一个umlaut会把服务搞得一团糟吗?XML应该支持ASCII以外的编码,那么这里的交易是什么呢?我能做些什么改变吗?或者如果失去了所有希望,我如何说服发件人对他们的特殊字符进行编码?

问题不是我想的那样

客户发送给我们的数据缺少正确的xml声明:

<?xml version="1.1" encoding="ISO-8859-1"?>

这样,服务正常运行

但是我得到的异常是由我们自己测试连接的程序引起的。该程序是WebServiceStudio,当我们试图通过它发送特殊字符(特别是
ä
)时,它完全失败:当使用WireShark进行检查时,消息体完全不存在

因此,最初我们认为客户遇到了与我们相同的问题,但当我们注意到我们的测试失败时,我们很快找到了真正的原因,这是SOAP消息中缺少XML声明。

这里的类似问题:可能有帮助。
<?xml version="1.1" encoding="ISO-8859-1"?>