您的位置:首页 > 编程语言 > ASP

asp.net 用伪静态---修改webconfig配置文件 .

2011-09-18 20:32 731 查看
使用rewrite在iis上设置规则来实现伪静态,这样在vs中开发的时候将无法调试,必须要是用iis发布才不会造成找不到文件的错误,当然,肯定还有其他的方法来实现伪静态的,不用再iis中设置任何的东西,只需要一个。net的组件和设置一下webconfig文件就ok了,来看一下,这东西,我用的次数很少,每次用都怕忘记,所以记录下来,下次忘记的话也不用Google啦

这回的准备工作,你必须去网上download一个URLRewriter.dll组件了,网上貌似有这个类库的源代码,当然里面也有编译好的dll文件,只需要把dll文件coty到自己站点的Bin下面,然后在网站上右键,添加引用,浏览选择这个dll文件即可。

下面就需要在webconfig里面配置一番了

1、在Web.Config的<system.web>和</system.web>添加以下节点:
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>

2、在Web.Config的<configuration>和</configuration>添加以下节点:

<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>

<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/Default/.html</LookFor>
<SendTo>~/Default.aspx</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Detial_([0-9]*)/.html</LookFor>
<SendTo>~/Detial.aspx?Id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/List_p([0-9]*)/.html</LookFor>
<SendTo>~/List.aspx?page=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/Double_t([0-9]*)_p([0-9]*)/.html</LookFor>
<SendTo><!--[CDATA[~/Double.aspx?type=$1&page=$2]]--></SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/About_(.*)/.html</LookFor>
<SendTo>~/About.aspx?title=$1</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>


设置完以上两个步骤,就基本可以运行了,其中<RewriterRule/>标签里面就是重写的一个模块,<LookFor/>里面的是重写后的地址,而<SendTo/>则是原地址。大家应该注意到了我写了2组<RewriterRule/>,其中第一组的是给单参数的地址用的,而另一组是给多参数动态文件用的。

相信大家如果用过在iis里面配置伪静态规则的话,那在webconfig里面配置规则自然不在话下,如果不会的话,就去找一些正则表达式的书看一下,不需要很精通就行

当然此方法有一些注意事项:
1.不能使用Windows身份验证用户权限. 应使用Form验证,在web.config配置为:<authentication mode="Forms" />
2.使用Request.ServerVariables["script_name"]获得的路径仍然是:ShowPlay.asp?vid=1
3.被重写的地址如果回发,重写将失效 显示的地址将是ShowPlay.asp?vid=1
4. 后缀名必须为.aspx.如果是其他自定义后缀名,如.net  请在iis将.net映射到aspnet_isapi.dll.

五个页面

About.aspx

<form id="form1" runat="server">
<div>
这是Aboutl页,url是About.aspx还是About.html?<br/>

<br/>
<br/>
<a href="Default.html" mce_href="Default.html">主页</a>
<br />
<br />
<a href ="List_p1.html">List页传page参数</a>
<br />
<br />
<a href ="Detial_1.html">Detial页传值Id参数</a>
<br />
<br />
<a href ="About_jianjie.html">About页传值title参数</a>
<br />
<br />
<a href ="Double_t1_p1.html">Double页传值type和page参数</a>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</div>
</form>


cs代码:

//About页面
public partial class About : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string title = Request["title"].ToString();
TextBox1.Text = "name为" + title;
}
}
//Detial页面
public partial class Detial : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string Id = Request["Id"].ToString();
TextBox1.Text = "Id号为" + Id;
}
}
//Double.aspx页面
public partial class Double : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string type = Request["type"].ToString();
string page = Request["page"].ToString();
TextBox1.Text = "type为:" + type + "page为" + page;
}
}
//List.aspx页面
public partial class List : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string page = Request["page"].ToString();
TextBox1.Text = "页数为" + page;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: