【发布时间】:2014-04-12 12:44:27
【问题描述】:
我有一个基于股票代码返回数据的股票查询应用程序。
基本上,AJAX 调用转到~/Stocks/GetStockData/{id},其中{id} 是股票代码。
这很好用……一般来说。今天我发现有BIN符号的股票“Progressive Waste Solutions Ltd.”爆炸了。查看浏览器中的返回数据,我看到它为这个符号返回了 404。
我突然想到 BIN 可能是一个保留字,要求一些二进制文件或其他东西。是这样吗?我如何不费吹灰之力地解决这个问题?是否还有其他关键字也会导致此问题?
更新
根据 Artyom Neustroev,这可能是一个保留关键字,并且可以防止路由到。他引用了一篇文章,该文章引用了一个网站,该网站说明了解决此问题的方法是在配置文件中添加以下配置设置:
<configuration>
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<!-- ... your other settings ... -->
</system.web>
</configuration>
...这让我更进一步。在运行我的网站后,ajax 调用返回了 404.8 错误:
HTTP Error 404.8 - Not Found
The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section.
好的,这实际上是有道理的。路由设置是为了防止有人进入我的bin 目录,我赞成这种预防措施。
所以我想知道如果有明确的路线,如何告诉一组特定的方法获得BIN 或CONFIG(理论上)这样的东西是可以的?
【问题讨论】:
-
我强烈怀疑这一点。您只是在传输一个字符串值,不应将其解释为其他内容。您是否收到任何可以帮助我们的内部错误消息?
-
这其实是可以的。看到这个问题:stackoverflow.com/questions/6194624/…
-
是的。它与保护内部 ASP.NET 文件(如 web.config 和 Bin 文件夹)的安全过滤器有关。根据 Phil Haack 的链接博客文章,使用宽松的 URL 规则应该是一种解决方法。
-
这有什么来源吗?以上来源和this one仅指
COM1-9、LPT1-9、AUX、PRT、NUL、CON的列表。 -
嗯...添加该配置可以让我进入
HTTP Error 404.8 - Not Found The request filtering module is configured to deny a path in the URL that contains a hiddenSegment section.
标签: c# asp.net-mvc asp.net-mvc-4 iis asp.net-routing