在Azure Web App上的URL中允许冒号(:)

时间:2016-09-20 13:21:33

标签: azure url azure-web-sites

我们正在尝试从Azure Web App上托管的ASP.NET网站公开遵循ARK标准(存档资源密钥)的URL。但似乎Azure Web Apps不支持URL路径段中的冒号(:),因为我们收到HTTP 500错误代码,并显示消息“由于发生内部服务器错误,无法显示页面”。在尝试输入http://example.azurewebsites.net/ark:/123/456等网址时。

请注意,我们确实更新了我们的web.config的RequestPathInvalidCharacters设置以允许URI中的冒号,并且它在本地运行。此外,URI中的冒号可能不是很频繁,但是valid,甚至wikipedia都使用冒号。

编辑:

经过几次测试后,看起来只有当冒号位于路径段的末尾时才会出现问题(例如:http://example.azurewebsites.net/ark:/123/456)。否则,requestPathInvalidCharacters设置适用。我们没有运气:ARK标准规定将冒号放在路径段的末尾。

请注意,此情况下显示的错误与requestPathInvalidCharacters具有默认值且冒号位于路径段中间时的错误不同。这里的错误似乎甚至在请求进入IIS管道之前发生(可能在Azure级别)。您可以测试上述URL以快速显示问题。

1 个答案:

答案 0 :(得分:0)

很抱歉我的原始回复。我尝试使用Azure MVC API。我将地图路线配置如下:

 config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}:{id}",
                defaults: new { id = RouteParameter.Optional }
            );

在web.config中添加requestPathInvalidCharacters:

    <httpRuntime targetFramework="4.5.2" requestPathInvalidCharacters=""/>

ValuesController:

  // GET api/values/5
        public string Get(int id)
        {
            return id.ToString();
        }

部署到Azure后,我可以从URL获得结果:http://.azurewebsites.net/api/values:5

enter image description here