关于伪静态问题

lvqiuchen 2012-04-16 02:19:20

.net生成的文件名是aspx.我想在URL上把aspx改成html

protected override void Render(HtmlTextWriter writer)
{
string name = Request.Url.AbsolutePath.Substring(1, Request.Url.AbsolutePath.Length - 1).Replace("aspx", "html");
name = name.ToLower().Replace("aspx/", "");
string newurl = "";
if (name.IndexOf("/") > 0)
{
newurl = Server.MapPath("/") + name;
}
else
{
newurl = Server.MapPath("/") + name;
}
MemoryStream ms = new MemoryStream();
StreamWriter sww = new StreamWriter(ms);
StreamWriter swr = new StreamWriter(newurl);
HtmlTextWriter htmlw = new HtmlTextWriter(swr);
base.Render(htmlw);
htmlw.Flush();
htmlw.Close();
string strLL = System.Text.Encoding.UTF8.GetString(ms.ToArray());
Response.Write(strLL);
string tourl = Request.Url.AbsoluteUri.ToLower().Replace(".aspx", "htm").Replace("aspx/", "");
Response.Redirect(tourl, true);
}

这是我网上找到的一种方法。报一个映射错误.请问高手这个方法可以做伪静态用么
...全文
158 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
rczjp 2012-04-18
  • 打赏
  • 举报
回复
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />

configSections节点后
<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor><![CDATA[~/(\d+)\.htm]]></LookFor>
<SendTo><![CDATA[~/index.aspx?pageNum=$1]]></SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>


system.web节点里
<httpModules>
<add type="URLRewriter.ModuleRewriter, URLRewriter" name="ModuleRewriter" />
</httpModules>
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
<rewriter>
<rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>
比如这行代码.Show代表我的页面.我所有页面都配置么
[/Quote]

这个利用到了正则表达式,有空你可以看一下正则基础
上面只是将用户请求的/test_xxx.html页面映射至/Show.aspx?Code=xxx上面,其中xxx是一个或多个大小写字母,并且将其作为GET参数Code的值

需要以虚拟URL解析的页面都要适当配置一下,不需要带参数的页面可以
<rewrite url="~/([a-zA-Z]+)\.html$" to="~/$1.aspx" processing="stop" />
lvqiuchen 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

LZ的做法用到了好几个Strame,并且还用到了Response.Redirect(),实在不妥
一般都是在HttpModule中截获请求,利用虚URL映射得到真实URL

http://www.cnblogs.com/NicholasLee/archive/2010/11/10/1873750.html

另外IIS7中已经自带了这个扩展模块
[/Quote]
您用到的也是URLRewriter.rar
<rewriter>
<rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>
比如这行代码.Show代表我的页面.我所有页面都配置么
  • 打赏
  • 举报
回复
LZ的做法用到了好几个Strame,并且还用到了Response.Redirect(),实在不妥
一般都是在HttpModule中截获请求,利用虚URL映射得到真实URL

http://www.cnblogs.com/NicholasLee/archive/2010/11/10/1873750.html

另外IIS7中已经自带了这个扩展模块

lvqiuchen 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

搜尋一下,應該有很多資料可參考
這篇寫的不錯
http://www.cnblogs.com/xiachufeng/archive/2010/02/04/1663866.html
[/Quote]
<rewriter>
<rewrite url="~/test_([a-zA-Z]+).html$" to="~/Show.aspx?Code=$1" processing="stop" />
</rewriter>
比如这行代码.Show代表我的页面.我所有页面都配置么
vinjent 2012-04-18
  • 打赏
  • 举报
回复
搜尋一下,應該有很多資料可參考
這篇寫的不錯
http://www.cnblogs.com/xiachufeng/archive/2010/02/04/1663866.html

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧