C#Uri在IIS中生成不同的绝对Uri

C#Uri在IIS中生成不同的绝对Uri,c#,.net,iis,encoding,uri,C#,.net,Iis,Encoding,Uri,我发现当我从控制台应用程序和IIS运行相同的代码时,C#Uri会产生不同的绝对Uri 例如,运行以下代码: new Uri("http://www.random.org/%D9%8A%D9%94").AbsoluteUri 在控制台应用程序中,我得到与输入相同的结果 http://www.random.org/%D9%8A%D9%94 在IIS环境中,我得到 http://www.random.org/%D8%A6 当我解码这些代码时,它们似乎引用了相同的值,我不明白在IIS下运行相同的代码会

我发现当我从控制台应用程序和IIS运行相同的代码时,C#Uri会产生不同的绝对Uri

例如,运行以下代码:

new Uri("http://www.random.org/%D9%8A%D9%94").AbsoluteUri
在控制台应用程序中,我得到与输入相同的结果

http://www.random.org/%D9%8A%D9%94

在IIS环境中,我得到

http://www.random.org/%D8%A6

当我解码这些代码时,它们似乎引用了相同的值,我不明白在IIS下运行相同的代码会导致差异

你能帮我把这件事搞清楚吗?

我明白了

我在配置文件中使用以下命令在IIS中应用iri解析规则:


我没有注意到这一点,因为具有此设置的旧代码不会受到此影响


无论如何,非常感谢您抽出时间

不,它们不是相同的值。第一个(控制台)是ئ,如您所述,但第二个(IIS)是ئ。注意区别,第一个有两个点,第二个没有点。我不知道那是什么语言(可以是阿拉伯语、波斯语等),但那是两个完全不同的字母。无论如何,我不能相信IIS正在更改字母,所以请仔细检查输入是否确实相同,因为我认为不是这样,或者发生了其他事情。运行console应用程序的机器和运行IIS的机器是同一台机器吗?我在同一台机器上以相同的输入值运行了它们。当我在EC2上运行相同的二进制文件时,我也注意到了同样的问题。我想一定是某些IIS设置导致了这种情况,但我不知道是什么导致了这种情况。出于某种原因,我想起了最近在新闻中出现的Punycode网络钓鱼漏洞。-Safari和Edge没有受到影响,但其他主要浏览器受到了影响。我把它作为一个超级链接放在一个web应用程序中,它显示了完整的字符串
”http://www.random.org/%D9%8A%D9%94“
在Edge中,但ئ字符在Chrome中。我做了相同的测试,得到了相同的结果。