asp.net 如何检查Application_BeginRequest是否为真实的IIS Web服务器上的图像等静态资源调用?

xbp102n0  于 2022-12-15  发布在  .NET
关注(0)|答案(2)|浏览(86)

我们有一个ASP.NET4.0网站,我们使用Global.asax中的Application_BeginRequest事件来进行一些智能重定向。当在Visual Studio提供的本地ASP.NET开发服务器(没有IIS)下调试解决方案时,Application_BeginRequest被调用用于apsx页面和静态资源(如css文件、jpg/gif图像等)。
这是一个已知的问题,但是我们的托管提供商(Windows 2008/IIS 7.0)的真实的IIS托管呢?我们如何检查静态资源是否发生这种情况?以及如何禁止这种情况?

mitkmikd

mitkmikd1#

所有请求都将流经Application_BeginRequest**,除非**您通过将runAllManagedModulesForAllRequests设置为false来告诉Web服务器以不同的方式运行

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

字符串
如果您没有web.config的访问权限,那么您可以设置一个快速测试:发表两个独特的形象:jpg和noredirect.jpg,并在Application_BeginRequest中设置重定向,然后查看是否发生重定向

var url = ((System.Web.HttpApplication)sender).Request.Url;
if (url.EndsWith("noredirect.jpg"))
{
 Response.Redirect(url.replace("noredirect.jpg","redirect.jpg"));
}

然后尝试访问“noredirect.jpg”,如果显示“redirect.jpg”,则重定向正在进行(=默认设置)

h43kikqp

h43kikqp2#

你可以试试

if (Request.Path.ToLowerInvariant().IndexOf(".aspx") > -1)
{
    // static files
}

相关问题