首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >HttpModule未与Visual Studio一起运行

HttpModule未与Visual Studio一起运行
EN

Stack Overflow用户
提问于 2009-06-08 05:41:10
回答 3查看 9K关注 0票数 21

我正在使用HttpModule在我的网站上做一些网址缩写。我使用的是Visual Studio2008、IIS7和.Net 3.5。

当在web.config的system.webServer元素中指定该模块,并且站点在IIS中运行时,它可以正常工作。配置如下所示:

代码语言:javascript
复制
<system.webServer>
        <modules>
            <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
        </modules>...

我的模块附加到BeginRequest事件,一切正常。但是,我无法使用内置的VS web服务器(Cassini)来运行它。我尝试将模块配置移到web.config中的system.web元素,但没有成功。我给它设了个断点,什么也没发生。

有没有想过为什么这会成为一个问题?

(我还尝试了global.asax中的Application_BeginRequest事件。仍然不走运,尽管我更喜欢将所有内容都保留在web.config中。)

EN

回答 3

Stack Overflow用户

发布于 2009-06-08 09:01:45

IIS提供的开发web服务器使用IIS6模块语法,因此您必须复制模块添加,如下所示

代码语言:javascript
复制
<system.web>
  <httpModules>
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
  </httpModules>
</system.web>


<system.webServer>
  <validation validateIntegratedModeConfiguration="false"/>
  <modules>
    <remove name="MinimizeModule" />
    <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" 
         preCondition="managedHandler" />
  </modules>
</system.webServer>

注意,我还为您的IIS7设置添加了一个前提条件

票数 41
EN

Stack Overflow用户

发布于 2015-01-10 00:20:38

如果您在IIS 7上运行,请将模块放入:

代码语言:javascript
复制
<configuration>
   <system.webServer>
      <modules>
         <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
      </modules>
   </system.webServer>
</configuration>

如果您运行的是Cassini (Visual Studio的集成微型web服务器),请将模块放入:

代码语言:javascript
复制
<configuration>
   <system.web>
      <httpModules>
          <add name="MinimizeModule" type="ClipperHouse.UrlMinimizer.MinimizeModule" />
   </system.web>
</configuration>

如果将Cassini位置提供给IIS,则IIS将崩溃。

如果您给Cassini提供IIS位置,它将崩溃。

无论何时部署,我都必须确保不部署web.config。我还将注释包含在web.config

代码语言:javascript
复制
<system.web>
   <!--The Cassini location to add modules (comment out for IIS)-->
   <httpModules>
      <!--WARNING: IIS will crash if you leave this in here.
          IISBUG: IIS doesn't support system.web/httpModules, 
          and Cassini doesn't support system.webServer/modules
      -->
      <!--Comment out for IIS-->
      <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
   </httpModules>
</system.web>

<system.webServer>
   <!--The IIS7 location to add modules (comment out for Cassini)
   <modules runAllManagedModulesForAllRequests="true">
      <!--IIS7 will crash if you present a system.web httpModules. -->
      <remove name="PerformanceHttpModule" />
      <add name="PerformanceHttpModule" type="DummyPlaceholder.PerformanceHttpModule"/>
   </modules>
</system.webServer>

IIS的左手不知道Cassini的右手在做什么--他们都搞砸了。

票数 2
EN

Stack Overflow用户

发布于 2009-06-08 08:41:29

您是否也尝试将模块声明放入元素中?当使用Cassini在dev中运行时,这通常是我必须放置模块以使其运行的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/963545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档