ASP.NET MVC4..是“;BIN”;保留关键字
本文关键字:BIN 保留 关键字 NET MVC4 ASP | 更新日期: 2023-09-27 17:57:57
我有一个股票查询应用程序,它基于股票符号返回数据。
基本上,AJAX调用转到~/Stocks/GetStockData/{id}
,其中{id}
是股票符号。
这很好。。。通常地今天,我发现股票"渐进式废物解决方案有限公司",它的标志是银行标识代码,爆炸了。查看浏览器中的返回数据,我发现它为这个符号返回了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
这样的东西(理论上)是可以的?
这里有一个简介:
路由机制会考虑隐藏的目录和文件(如web.config、/bin等),并对用户隐藏它们。对于其中一些,规则可以稍微放宽一点,因为它们是在代码中处理的。这些"关键字"是:CON
、COM1
、COM2
、COM3
、COM4
、LPT1
、LPT2
、AUX
、PRN
和NUL
。这些实际上可以通过更改web.config文件来引用,如下所示:
<configuration>
<system.web>
<httpRuntime relaxedUrlToFileSystemMapping="true"/>
<!-- ... your other settings ... -->
</system.web>
</configuration>
但是,其他类型的隐藏关键字不是在代码中管理的,而是在IIS中管理的。你有两种选择。你可以按照Artyom Neustroev的建议修改IIS设置(他链接到了这个),这让我觉得有点危险,但我希望它能起作用。
另一个选项,也就是我使用的选项,是将AJAX调用更改为POST
方法。然后该值不在URL中,整个问题就被规避了。
感谢所有让我走到这一步的人。