我正在尝试创建类EndpointAddress的实例,其中参数包含德语变音符号.
例如:
EndpointAddress endpointAddress = new EndpointAddress("net.tcp://süd:8001/EmployeeService");
Run Code Online (Sandbox Code Playgroud)
它总是抛出异常,因为uri无法被解析.我试图用编码值替换变音符号,但我得到相同的异常:
无效的URI:无法解析主机名.
以前有没有人有同样的问题?先感谢您.
解析器可能不知道如何使用国际化域名(IDN)。如果您想拥有这样的主机名,您将必须自己进行 Punycode 编码。我还没用过它,但有一个核心函数IdnMapping.GetAscii看起来很合适 \xe2\x80\x94 类似
\n\nEndpointAddress endpointAddress = new EndpointAddress(\n "net.tcp://" + IdnMapping.GetAscii("s\xc3\xbcd") + ":8001/EmployeeService"\n);\nRun Code Online (Sandbox Code Playgroud)\n\n也许会起作用(如果不起作用请原谅我,C# 不是我的语言)。
\n