# 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
。
更多详情,可参考下图:
我在虚拟目录中有很多文件夹,其中很多文件夹的名称中都有 #
,
当从 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
。
更多详情,可参考下图: