【问题标题】:Allow colon (:) in URL on Azure Web App在 Azure Web App 上的 URL 中允许冒号 (:)
【发布时间】:2016-09-20 13:21:33
【问题描述】:

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

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


编辑:

经过几次测试,问题似乎只发生在冒号位于路径段末尾时(例如:http://example.azurewebsites.net/ark:/123/456)。否则,将应用 requestPathInvalidCharacters 设置。我们运气不好:ARK 标准规定冒号应放在路径段的末尾。

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

【问题讨论】:

    标签: azure url azure-web-app-service


    【解决方案1】:

    对不起,我的原始回复。我尝试使用 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=""/>
    

    值控制器:

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

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

    【讨论】:

    • 我们需要为我们的客户端实现归档资源密钥,其爬虫基于此标准,因此不在 URL 中放置冒号确实不是一种选择。我现在能想到的唯一选择是将网站托管在 Azure 之外(至少是处理此协议的部分)。一个琐碎的用例需要大量额外的开发和维护......
    • 抱歉我的回复不正确,我再次测试并可以使用冒号 url 从 MVC API 获取结果。请看我编辑的回复。希望它能满足您的要求。
    • 经过几次测试后,看起来问题仅在冒号位于路径段末尾时才会发生(例如:example.azurewebsites.net/ark:/123/456)。否则,将应用 requestPathInvalidCharacters 设置。我们运气不好:ARK 标准规定冒号应放在路径段的末尾。
    • 请注意,这种情况下显示的错误与requestPathInvalidCharacters具有默认值并且冒号放置在路径段中间时的错误不同。即使在请求进入 IIS 管道(可能在 Azure 级别)之前,这里的错误似乎也会发生。您可以测试上面的 URL 以快速显示问题。
    猜你喜欢
    • 2017-08-06
    • 2010-12-16
    • 2015-04-09
    • 2015-09-03
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2015-12-27
    • 1970-01-01
    相关资源
    最近更新 更多