.net技术,URLRewriter生成伪静态页面,页面重定向

hubeiliuyaping 2008-12-30 01:54:19
有没有谁用过 URLRewriter 来生成伪静态页面的。 这个东西怎么弄?


现在的问题是碰到如果要传参数的页面的时候会报错,怎么搞? 一个新闻列表页面 newsList.aspx 把相关的东西全部弄好以后,然后输入 newsList.html的时候不会报错,但如果有一个详细页面 比如说 newsDisplay.aspx?id=10 在其它地方配法也是一样的,但是会出现一个问题,就是找参数的问题, 比如说在newsDisplay.aspx.cs 里面有一个方法Request.QueryString["id"].ToString()来接受这个值,但会报错(这个地方我是要把它转换成Int类型) 会提示输入字符串的格式不正确 这是怎么回事,有没有什么好的方法可以解决??? 谢谢了!!!
...全文
401 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
z532264001 2011-05-18
  • 打赏
  • 举报
回复
Request.QueryString["id"].ToString()

换成Request.QueryString[0].ToString()试试
mcchongchong 2011-04-26
  • 打赏
  • 举报
回复
好想学习
erik0930 2008-12-30
  • 打赏
  • 举报
回复
mark
hubeiliuyaping 2008-12-30
  • 打赏
  • 举报
回复
还有个问题,如果我一个页面要传两个参数,那在webconfig里面怎么配。 比如一个页面要传一个 id 跟一个 type id是数字类型的,但type是字字符串类型的,那在webconfing里面要怎么样配, 好像在web.config里面不能用&这个字符吧。
hubeiliuyaping 2008-12-30
  • 打赏
  • 举报
回复
可以了,现在是好的了。 不过又出现了一个新的问题 它总是会弹出这样一个对话框 Stack overflow at line:0 然后上面的图片就都显示不出来,这是怎么回事,难道页面上用了ajax的就不能再用这个了(我这个页面用了几个ajax来搞的)???
carkiller 2008-12-30
  • 打赏
  • 举报
回复
读错了可能是读取文件路径的时候没找到文件,检查下文件的地址看看
hubeiliuyaping 2008-12-30
  • 打赏
  • 举报
回复
我刚才试过了,是在接受传递值的时候读错了, 我想问一下,在web.config里面这个地方应该怎么配

我那个地方是这样写的

<Rules>
<RewriterRule>
<LookFor>~news/newsDisplay/(.[0-9]*)\.html</LookFor>
<SendTo>~news/newsDisplay.aspx?id=(.[0-9]*)</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~index.html</LookFor>
<SendTo>~index.aspx</SendTo>
</RewriterRule>
</Rules>

这个地方应该怎么写
carkiller 2008-12-30
  • 打赏
  • 举报
回复
利用Mircosoft URLRewriter.dll实现页面伪静态
先下一个URLRewriter.dll
然后写你的代码
配下webconfig

<?xml version="1.0"?>
<configuration>
<configSections>
<section name="RewriterConfig" type="URLRewriter.Config.RewriterConfigSerializerSectionHandler, URLRewriter" />
</configSections>

<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>~/web/new/type/(.[0-9]*)\.html</LookFor>
<SendTo>~/web/new.aspx?id=$1</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>~/web/index.html</LookFor>
<SendTo>~/web/index.aspx</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>
<system.web>
<httpHandlers>
<add verb="*" path="*.aspx" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
<add verb="*" path="*.html" type="URLRewriter.RewriterFactoryHandler, URLRewriter" />
</httpHandlers>
<compilation debug="true"/></system.web>
</configuration>

解释下webconfig

<RewriterConfig>
<Rules>
<RewriterRule>
<LookFor>要查找的模式</LookFor>
<SendTo>要用来替换模式的字符串</SendTo>
</RewriterRule>
<RewriterRule>
<LookFor>要查找的模式</LookFor>
<SendTo>要用来替换模式的字符串</SendTo>
</RewriterRule>
</Rules>
</RewriterConfig>

httpHandlers的设置主要是配合IIS将请求重新定义处理,这里也比较关键,如果不存在合理的httpHandlers,那么,访问肯定会失败的。

配置IIS解析.html文件
右键点我的电脑-->管理-->展开'服务和应用程序'-->internet信息服务-->找到你共享的目录-->右键点击属性 -->点击'配置'-->映射下面 -->找到.aspx的可执行文件路径 复制路径-->粘贴路径-->扩展名为".html"-->然后把检查文件是否存在的勾去掉这样就可以了,如果遇到“确定”按钮失效,可以用键盘事件编辑路径即可解决。
zpcoder 2008-12-30
  • 打赏
  • 举报
回复


事实上在 url 地址栏上的 www.abc.com/newsdetails-10.html (假设你重写成这个样子)

那么IIS 还是会映射成 newsDisplay.aspx?id=10 到你的.net 程序的服务端。

对于你的.net来说还是 newsDisplay.aspx?id=10 所以Request.QueryString["id"]仍可以取到值

62,050

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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