相关疑难解决方法(0)

BUG:IIS7管理的请求

(我不知道是否也应该将此问题发布到ServerFault,因为它是关于IIS配置的?)

在IIS7中,我们可以告诉模块运行托管内容(从而加快静态内容服务):

<modules>
    ...
    <add name="WhateverName"
         type="WhateverType"
         preCondition="managedHandler"
    ...
</modules>
Run Code Online (Sandbox Code Playgroud)

但.只要在请求的URL中还有文件名(带扩展名),这样就可以正常工作.如果省略它,IIS7会认为你想要静态内容,托管模块将无法运行.

http://localhost/ <-- this one will skip managed handlers
http://localhost/default.aspx <-- this one will run them
Run Code Online (Sandbox Code Playgroud)

如果我手动设置IIS7默认文件,那么第一个是default.aspx,我可以看到没有区别,没有区别.对我来说,这看起来像是一个臭虫,走路和听起来像是 这是一个错误!为什么?因为当我请求第一个时,它是一个托管请求,不是吗.当然如此.但IIS7将其视为静态请求.所以?这是一个错误.此请求应视为托管.

如何说服IIS7为没有文件名的URL请求运行托管处理程序?

帮助思考

让我帮你思考一下:如果我重新订购system.webServer/handlers,我肯定可以解决这个问题.最后才StaticFile指向处理器StaticFileModule,DefaultDocumentModule并且DirectoryBrowsingModule我要上运行的目录请求集成asp.net处理程序.或者编写我自己的处理程序,将默认文档附加到任何目录请求.我很确定其中一个应该解决它.但是我如何配置/开发它呢?

configuration iis-7 httpmodule

5
推荐指数
1
解决办法
8428
查看次数

JS,图像和CSS被HTTPModule拦截

我有一个简单的HTTPModule,它可以进行一些自定义会话状态管理.

public void Init(HttpApplication context)
        {
            context.AcquireRequestState += new EventHandler(ProcessBeginRequest);
            ActivityLogger.LogInfo( DateTime.UtcNow.ToLongTimeString() + " In Init " + HttpContext.Current.Request.Url.AbsoluteUri);
        }
Run Code Online (Sandbox Code Playgroud)

和

public void ProcessBeginRequest(object sender, EventArgs e)
        {
            HttpApplication application = sender as HttpApplication;
            ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest ");
            if (application != null)
            {
                string requestURL = application.Context.Request.Url.ToString();
                ActivityLogger.LogInfo(DateTime.UtcNow.ToLongTimeString() + " In ProcessBeginRequest " + requestURL);
            }
            return;
        }
Run Code Online (Sandbox Code Playgroud)

当我使用断点运行此代码时,我看到即使对于静态文件(如images,js和css)也调用了此模块.有没有人经历过这个?我认为HTTP模块只是挂钩到asp.net页面的http管道中的事件.他们是否也依赖于静态资源?或者只是卡西尼?

环境:VS2008 - cassini服务器

PS:我在沙箱中尝试使用Win2k8 IIS7(有点新),并尝试将其写入日志文件(因为我们没有VS),但无法写入日志文件.我确定它的一些写权限问题.任何人都可以指向我一些资源,它告诉我如何在W2k8中运行带有IIS7的ASP.net时为目录设置写权限

Edit1:我知道使用Integrated管道可以扩展静态和托管资源的http管道 http://aspnet.4guysfromrolla.com/articles/122408-1.aspx和http://learn.iis.net/page.aspx/243/ASPNET集成与- IIS7 /

我们在生产中使用经典管道.但仍然有兴趣了解其他人的经历.

问题2:在集成模式下使用IIS7会降低性能吗?假设您有几个模块与管道连接,性能影响有多大?如果有人可以指出我做了一些基线研究,那将会很好.

asp.net iis-7 cassini httpmodule ihttpmodule

5
推荐指数
1
解决办法
5881
查看次数