环境:Visual Studio 2015, IIS Express 10, ASP.NET 4.5

演示代码:http://files.cnblogs.com/files/joe-yang/RewriteModule.zip

最近要重构旧项目的代码,其中用到了URL Rewrite。 由于之前没有研究过URL Rewrite,今天在研究ASP.NET2.0时代的URL Rewrite时, 在网上找了一篇感觉讲的比较全的[文章](https://www.simple-talk.com/dotnet/asp.net/a-complete-url-rewriting-solution-for-asp.net-2.0/)。下载了演示代码,发现是用visual studio 2008写的。用我本地的Visual Studio 2015打开并把项目升级后,F5运行,报了2个错误。

第一个是: “HTTP Error 500.22 - Internal Server Error 检测到在集成的托管管道模式下不适用的 ASP.NET 设置。”, 具体如下:

由于在ASP.NET 2.0时代,注册HttpModule是在system.web节点下的:

<system.web>

    <httpModules>
<add name="RewriteModule" type="RewriteModule.RewriteModule, RewriteModule"/>
</httpModules> <!-- ......-->
<system.web>

根据错误提示, 把注册HttpModule迁移到system.webServer下面:

<system.webServer>
<modules>
<add name="RewriteModule" type="RewriteModule.RewriteModule, RewriteModule"/>
</modules>
</system.webServer>

接着,F5运行测试,出现第二个错误:

在根据提示,在添加模块之前,先添加一行移除代码:

<system.webServer>
<modules>
<remove name="RewriteModule" />
<add name="RewriteModule" type="RewriteModule.RewriteModule, RewriteModule"/>
</modules>
</system.webServer>

这样,在visual studio 2015中运行就没有问题了。

但是...,发现没有运行加载HttpModule模块. 在网上找了半天,还是没有找到解决方案. 后来发现源头还是因为把项目从visual studio 2008升级visual studio 2015的缘故.因为原来demo代码的.net framework是2.0的,升级之后项目的.net framework还是2.0。

但是,visual studio 2015开发是运行在IIS Express 10下面的,这也是为什么要把注册模块移到system.webServer节点下的缘故。把项目的.net framework改成最新的4.6。F5运行,httpmodule加载成功了。

注意:调试的时候,把Visual Studio 2015设置为Debug模式。否则会有警告窗口提示你。

参考: https://msdn.microsoft.com/en-us/library/ms227673.aspx

https://msdn.microsoft.com/en-us/library/system.web.ihttpmodule(v=vs.110).aspx

https://msdn.microsoft.com/en-us/library/ms227673(v=vs.110).aspx

在IIS 10中注册自定义的IHttpModule的更多相关文章

  1. iis 10 重新注册iis

    iis 10 使用该命令 提示 版本不支持 C:\WINDOWS\system32>c:\windows\microsoft.net\framework64\v4.0.30319\aspnet_ ...

  2. 注册asp.net 4.0版本到IIS服务器中

    在IIS服务器的运维的过程中,有时候部署asp.net网站发现未安装.net framework对应版本信息,此时就需要重新将.net framework对应的版本注册到IIS中,此处以重新注册.ne ...

  3. 【spring源码学习】spring的IOC容器之自定义xml配置标签扩展namspaceHandler向IOC容器中注册bean

    [spring以及第三方jar的案例]在spring中的aop相关配置的标签,线程池相关配置的标签,都是基于该种方式实现的.包括dubbo的配置标签都是基于该方式实现的.[一]原理 ===>sp ...

  4. iis如何在dos中注册

    iis如何在dos中注册   2009-09-23 08:13 提问者采纳   cd \cd c:\windows\microsoft.net\framework\v2.0.50727aspnet_r ...

  5. 【Azure 云服务】Azure Cloud Service 为 Web Role(IIS Host)增加自定义字段 (把HTTP Request Header中的User-Agent字段增加到IIS输出日志中)

    问题描述 把Web Role服务发布到Azure Cloud Service后,需要在IIS的输出日志中,把每一个请求的HTTP Request Header中的User-Agent内容也输出到日志中 ...

  6. 创建和注册自定义 HTTP 模块

    本演练演示自定义 HTTP 模块的基本功能. 对于每个请求,都需要调用 HTTP 模块以响应 BeginRequest 和 EndRequest 事件. 因此,该模块在处理请求之前和之后运行. 如果 ...

  7. 演练:创建和注册自定义 HTTP 模块

    本演练演示自定义 HTTP 模块的基本功能. 对于每个请求,都需要调用 HTTP 模块以响应 BeginRequest 和 EndRequest 事件. 因此,该模块在处理请求之前和之后运行. 如果 ...

  8. Django 1.10中文文档-第一个应用Part2-模型和管理站点

    本教程继续Part1.我们将设置数据库,创建您的第一个模型,并快速介绍Django的自动生成的管理网站. 数据库设置 现在,编辑mysite/settings.py.它是一个用模块级别变量表示Djan ...

  9. 10#Windows注册表的那些事儿

    引言 用了多年的Windows系统,其实并没有对Windows系统进行过深入的了解,也正是由于Windows系统不用深入了解就可以简单上手所以才有这么多人去使用.笔者是做软件开发的,使用的基本都是Wi ...

随机推荐

  1. 开发一个 App 有多难?说出来你可能不信!

    上图为程序员客栈儿童类视频APP 1.开发一个APP有多难?说实话,单纯地从开发来说,开发一个APP没有那么难.如果一款APP的基本功能点确定了,开发时间一般为1-2个月就完成了,费用大约5-10万的 ...

  2. 【转】ORACLE SQL基础—DDL语言 礼记八目 2017-12-23 21:26:21

    原文地址:https://www.toutiao.com/i6502733303550837261/ SQL语言分为:DDL数据定义语言,DML数据操纵语言,DCL是数据库控制语言,TC事务控制语言 ...

  3. 路飞学城Python-Day96

    51-数据库表关系之一对多 为什么有多表的概念? 一个Book有单表的时候只能查询Book表中的内容,要想查询更多的出版社的信息,需要再将单表的内容不断更新 导致单表会存储大量的重复的信息,浪费了大量 ...

  4. 死磕itchat源码--content.py

    content.py中定义了接受消息的类型,即,用于注册消息函数时的参数类型.源码如下: TEXT = 'Text' MAP = 'Map' CARD = 'Card' NOTE = 'Note' S ...

  5. jq DataTable

    DataTables(http://datatables.club/index.html)应该是我到目前为止见过的,功能最强大的表格解决方案(当然,不计算其它整套框架中的table控件在内). 先把它 ...

  6. nmcli 静态方式添加IP地址

    [root@ansible02:/root] > ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state U ...

  7. 【hdu 6406】Taotao Picks Apples

    [链接] 我是链接,点我呀:) [题意] 题意相当于问你改变一个位置之后. 从左往右扫描最大值.这个最大值会改变多少次. [题解] 假设我们改变的是i这个位置,下面说的a[i]都是改成q之后的a[i] ...

  8. OA项目总结3

    struts2自定义标签中  使用in  判断当前值 是否在某个集合中 该属性一方面可以获取前端页面传递过来的参数   另外一个作用就是在数据回显时把用户已经拥有的权限id存入该集合中   放在栈顶 ...

  9. 如何用Vim提高开发效率

    即可 ●输入m获取到文章目录 推荐↓↓↓ C/C++编程 更多推荐<18个技术类公众微信> 涵盖:程序人生.算法与数据结构.黑客技术与网络安全.大数据技术.前端开发.Java.Python ...

  10. Linux线程资源限制