使用iis7及以上版本配置伪静态

一 在解决方案中新建一个类库,命名为UrlReWriter(随意),在该类库中新建一个类,命名为MyUrlWriter(随意),该类中的代码如下:

public class MyUrlWriter:IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += new EventHandler (context_BeginRequest);
}

protected void context_BeginRequest( object sender, EventArgs e)
{
HttpApplication application = sender as HttpApplication ;
HttpContext context = application.Context; //上下文
string url = context.Request.Url.LocalPath; //获得请求URL

Regex articleRegex = new Regex ("/index.html" ); //定义规则
if (articleRegex.IsMatch(url))
{
string paramStr = url.Substring(url.LastIndexOf('/' ) + 1);
context.RewritePath( "/Article.aspx?id=" + paramStr);
}
else
{
context.RewritePath( "/Default.aspx" );
}
}

public void Dispose() { }
}

注:需要在该类库中添加system.web引用
二 在解决方案中新建一个网站命名随意,在网站中添加两个web窗体,命名分别为default.aspx,Article.aspx.
default.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<a href ="/index.html">测试url重写</a>
</div>
</form>
</body>
</html>


Article.aspx代码如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Article.aspx.cs" Inherits="Article" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%=Request.QueryString["id"] %>
</div>
</form>
</body>
</html>

三 在web.config的system.web的节点下添加如下代码:

<httpModules>
<add name="UrlReWriter " type="UrlReWriter.MyUrlWriter,UrlReWriter" />
</httpModules>

注:此处的type中的UrlReWriter对应上面命名的类库名称,MyUrlWriter对应上面类库中的类的命名。
四 下载 URLRewrite(不知道是否有用) 下载地址: http://www.iis.net/expand/URLRewrite ,打开iis对着网站-右键-添加网站,在下图红框中填入对应的信息:
使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客
 五 在浏览器地址栏输入本机ip地址:上面填写的端口号,进入页面会出现如图错误
使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客
  注:此错误只需要将iis中网站对应的应用程序池托管管道模式由集成改为经典即可,但由于需要在iis中配置伪静态,所以暂时不用修改。
六 首先确保网站对应的应用程序池对应的托管管道模式为集成,然后选中新建的网站,在右侧的功能视图中双击处理程序映射。
找到“添加脚本映射”这一栏目之后,点击进入,就会弹出新的对话框,请求路径设置为*.html ,可执行文件为 C:\Windows \Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(如果使用的.net2.0,如果是4.0应该路径为 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,如果是64位系统并且未在应用程序池高级设置中启用32位应用程序路径应该将Framework改为Framework64,如果是32位系统或者是启用了32位应用程序那就是上面的地址 ,名称可设定为 html,如图所示:
使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客
 点击 添加通配符脚本映射, 请求路径设置为*.html ,可执行文件为 C:\Windows \Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll(如果使用的.net2.0,如果是4.0应该路径为 C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll,如果是64位系统并且未在应用程序池高级设置中启用32位应用程序路径应该将Framework改为Framework64,如果是32位系统或者是启用了32位应用程序那就是上面的地址 ,名称可设定为 test,如图所示:
使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客
 点击 托管处理程序, 路径:*   可执行文件:System.Web.UI.PageHandlerFactory 

名称 任意 比如test1,如图所示:

使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客

 七 在iis中选中之前创建的网站,在右边的功能视图中双击模块-在右侧操作中点击添加托管模块,名称随意比如all,类型填写之前的类库名称.类名,勾选仅针对向asp.net或托管。。。,如下图所示:

使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客

 八 将应用程序池中的托管管道模式由集成改为经典,在浏览器地址输入自己ip:端口号,点击链接,如出现404错误(注意红框位置):

使用iis7及以上版本配置伪静态 - 不懂love - 不懂dé嗳的博客

 如果处理程序为显示为StaticFile则表明前面的处理程序映射没有填写正确.net版本或者系统版本,如果是添加的映射程序名字,就把那个映射程序点开,点击请求限制,将映射中的仅当请求映射至以下内容时。。。。的勾选去掉。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值