# IIS 文件路径中的符号

# symbol in path of file in IIS

我在虚拟目录中有很多文件夹,其中很多文件夹的名称中都有 #, 当从 IIS 请求这样的东西时,它会 return 404 错误, 文件夹名称是 John^Rezaei^^#SM 183217,它似乎在 LOG 文件中被分开,如:

2019-08-11 10:29:31 ::1 GET /web/virtuald/Study/John^Rezaei^^ - 80 - ::1 Mozilla/5.0+(Windows+NT+10.0;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/75.0.3770.142+Safari/537.36 - 302 0 0 690

#到结束被忽略,意味着/web/virtuald/Study/John^Rezaei^^请求不是/web/virtuald/Study/John^Rezaei^^#SM 183217/im00001.jpg

即使添加以下配置也没有任何改变:

<system.webServer>
<security>
  <requestFiltering allowDoubleEscaping="true">
  </requestFiltering>
</security>

据我所知,#是url部分的特殊字符。 # 后面的数据将被视为查询字符串。

因此您应该使用 %23 来替换“#”。

所以虚拟路径的url,你应该使用John%5ERezaei%5E%5E%23SM%20183217

更多详情,可参考下图: