Url解码无法在Azure Web应用

时间:2016-05-19 16:10:17

标签: asp.net azure umbraco azure-web-sites urldecode

我似乎遇到了Url在舞台网站上被错误解码的问题。我一直在网上寻找,但我似乎无法找到关于如何切换默认使用的解码方法的任何内容。我可以说舞台网站正在使用Windows-1252来解码网址,例如:

舞台网站(错误)

de-de/people/%C3%A1ine-hurley/ -> de-de/people/áine-hurley

开发网站(正确)

de-de/people/%C3%A1ine-hurley/ -> de-de/berater/áine-hurley

开发者网站正在渲染正确的网址,正在使用UTF-8进行解码。为了比较解码字符,您可以访问此链接http://www.w3schools.com/tags/ref_urlencode.asp

我真的很茫然,无论是舞台还是现场,我都可以在Azure网络应用中进行设置,而且我可以看到它们具有相同的设置(但我感觉它可能是某个服务器设置)。

如果有人能够提供有关其工作原理的更多信息,或者是否可以更改服务器上的解码设置,那将非常感激。如果需要更多信息,我很乐意提供。我只是不确定哪些信息会有用。

1 个答案:

答案 0 :(得分:0)

经过更多的调查,我注意到舞台网站实际上发布了301个永久重定向到一个首先使用windows-1252解码然后重新编码为UTF-8的URL(这是非常特殊的,因为我找不到代码中的任何地方都可以做到这一点,也无法在重写规则中找到任何内容。)

然而,通过添加永久规范重定向来解决没有www的暂存站点,可以解决这个问题。并强迫它进入stage.sitename.come。示例规范如下:

<rule name="Redirect to WWW" stopProcessing="true" >
    <match url="(.*)" />
    <conditions>
        <add input="{HTTP_HOST}" pattern="^www\." negate="true"/>
    </conditions>
    <action type="Redirect" url="https://www.{HTTP_HOST}{HTTP_URL}" redirectType="Permanent" appendQueryString="false" />
</rule>

如果有人知道为什么会解决这个问题,那么很想知道:)。希望如果遇到这个问题,这可以帮助其他人。