Asp.net 如何将IIS设置为对URL中的奇怪字符返回404,如ÃÂÃÂÃÂÃ;?

Asp.net 如何将IIS设置为对URL中的奇怪字符返回404,如ÃÂÃÂÃÂÃ;?,asp.net,iis,Asp.net,Iis,当我检查我的服务器日志文件时,我看到bingbot不断请求带有奇怪字符的URL。但它有时会返回状态200/500。如何设置IIS为URL中的奇怪字符返回404 感谢根据您尝试过滤的内容类型(此处不清楚),可能只有一些配置方法可以做到这一点,但我发现的最简单的方法是使用以下web.config条目将所有请求路由到global.asax: ... <system.webServer> <modules runAllManagedModulesForAllRequests="

当我检查我的服务器日志文件时,我看到bingbot不断请求带有奇怪字符的URL。但它有时会返回状态200/500。如何设置IIS为URL中的奇怪字符返回404


感谢

根据您尝试过滤的内容类型(此处不清楚),可能只有一些配置方法可以做到这一点,但我发现的最简单的方法是使用以下
web.config
条目将所有请求路由到
global.asax

...
<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
...

当然,您需要更改“if”语句,以执行筛选出违规请求所需的任何逻辑(并且确保不要筛选出任何您真正想要的请求)。您还可以检查
用户代理
标题,查看它是否是BingBot(从您的问题中,不完全确定这是否重要)。

此解决方案解决了服务器日志文件中的奇怪字符问题。但我对Bing索引的URL还有一个问题。当我检查我的bing网站管理员工具时,我发现一些其他URL使用不同类型的奇怪字符进行索引,如“yen––ãyen–”。即使使用上述解决方案,它们也会返回错误的请求-无效的URL 400。你对如何解决这个问题有什么建议吗?谢谢。你在ASP.NET 4.x上吗?该版本中有一个新的设置,使得IIS在到达ASP之前过滤掉一些请求,表面上是因为这些字符可以用于安全漏洞攻击。IIRC,该设置称为requestValidationMode,如果将其设置为“2.0”,则要求不那么严格,大多数请求都会通过global.asax进行过滤。如果您使用google requestValidationMode,您应该能够找到该设置的确切位置以及它的功能描述。这可能是导致错误请求返回的原因。我刚刚尝试过,但不起作用。它仍然返回相同的错误请求。我找到了一个导致错误请求的角色。我不能在这里粘贴那个特殊的字符,因为它只是不见了。但是我没有足够的分数在我的帖子中发布角色的图片。希望这能给你一些指导:。至少它可以帮助您了解是ASP还是IIS在进行阻塞。请记住,IIS和ASP执行此阻止是有原因的,因此在禁用它之前,您应该了解执行阻止的原因。感谢您的指导。我认为是iis在进行阻塞。我使用fiddler查看发送到服务器的原始URL,发现无效字符是在发送到服务器之前编码的。我很确定导致问题的字符集之一是“%C2%8D”或仅仅是“%8D”。如何将iis设置为返回404而不是400,从而使Bing对这些无效URL进行索引?
/// <summary>
/// The global web application object.
/// </summary>
public class Global : System.Web.HttpApplication
{
    protected void Application_BeginRequest(object sender, EventArgs e)
    {
        if (Context.Request.Url.Contains("ÃÂÃÂÃÂÃ"))
        {
            context.Response.StatusCode = 404;
            return;
        }
    }
}