我正在尝试使EndpointAddress类的实例的参数包含德语变音符号。

例如:

EndpointAddress endpointAddress = new EndpointAddress("net.tcp://süd:8001/EmployeeService");

它总是抛出无法解析给定uri的异常。我尝试用编码值替换变音符号,但出现相同的异常:



以前有人遇到过同样的问题吗?
先感谢您。

最佳答案

解析器可能不知道如何使用internationalized domain names(IDN)。如果要使用这样的主机名,则必须自己进行Punycode编码。我没有用过,但是有一个核心函数IdnMapping.GetAscii看起来很合适-像

EndpointAddress endpointAddress = new EndpointAddress(
    "net.tcp://" + IdnMapping.GetAscii("süd") + ":8001/EmployeeService"
);

也许可以工作(如果不能,请原谅我,C#不是我的语言)。

09-10 17:17