我们正在尝试从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以快速显示问题。
答案 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