Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NETMVC4。。。是";“银行标识代码”;保留关键字?_C#_Asp.net Mvc_Asp.net Mvc 4_Iis_Asp.net Routing - Fatal编程技术网

C# ASP.NETMVC4。。。是";“银行标识代码”;保留关键字?

C# ASP.NETMVC4。。。是";“银行标识代码”;保留关键字?,c#,asp.net-mvc,asp.net-mvc-4,iis,asp.net-routing,C#,Asp.net Mvc,Asp.net Mvc 4,Iis,Asp.net Routing,我有一个股票查询应用程序,它返回基于股票符号的数据 基本上,AJAX调用转到~/Stocks/GetStockData/{id},其中{id}是股票符号 这个很好用。。。通常地今天我发现股票“Progressive Waste Solutions Ltd.”爆炸了,股票上有垃圾桶的标志。查看浏览器中的返回数据,我看到该符号返回404 我突然想到BIN可能是一个保留字,要求一些二进制文件或其他东西。是这样吗?我如何不费吹灰之力就解决这个问题?是否还有其他关键字也会导致此问题 更新 根据Artyom

我有一个股票查询应用程序,它返回基于股票符号的数据

基本上,AJAX调用转到
~/Stocks/GetStockData/{id}
,其中
{id}
是股票符号

这个很好用。。。通常地今天我发现股票“Progressive Waste Solutions Ltd.”爆炸了,股票上有垃圾桶的标志。查看浏览器中的返回数据,我看到该符号返回404

我突然想到BIN可能是一个保留字,要求一些二进制文件或其他东西。是这样吗?我如何不费吹灰之力就解决这个问题?是否还有其他关键字也会导致此问题

更新

根据Artyom Neustroev的说法,这可能是一个保留的关键字,并且会受到保护,不被路由到。他引用了一篇文章,其中引用了一个网站,该网站说明了解决方法,即在配置文件中添加以下配置设置:

<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    <!-- ... your other settings ... -->
  </system.web>
</configuration>
好吧,这其实有点道理。路由设置为防止有人进入我的
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中了,整个问题都被回避了


感谢所有让我走到这一步的人。

我对此深表怀疑。您只是在传输一个字符串值,不应将其解释为其他内容。您是否有任何内部错误消息可以帮助我们?这实际上是可能的。看这个问题:是的。它与保护内部ASP.NET文件(如web.config和Bin文件夹)的安全过滤器有关。根据Phil Haack的链接博客文章,使用宽松的URL规则应该是一个解决办法。有没有相关的来源?上述来源,仅指
COM1-9
LPT1-9
AUX
PRT
NUL
CON
。嗯。。。添加该配置会使我进入
HTTP错误404.8-未找到请求筛选模块被配置为拒绝URL中包含HiddenSecgment节的路径。
<configuration>
  <system.web>
    <httpRuntime relaxedUrlToFileSystemMapping="true"/>

    <!-- ... your other settings ... -->
  </system.web>
</configuration>