有没有谁用过   URLRewriter    来生成伪静态页面的。     这个东西怎么弄?
现在的问题是碰到如果要传参数的页面的时候会报错,怎么搞?    一个新闻列表页面    newsList.aspx   把相关的东西全部弄好以后,然后输入   newsList.html的时候不会报错,但如果有一个详细页面  比如说  newsDisplay.aspx?id=10  在其它地方配法也是一样的,但是会出现一个问题,就是找参数的问题,  比如说在newsDisplay.aspx.cs  里面有一个方法Request.QueryString["id"].ToString()来接受这个值,但会报错(这个地方我是要把它转换成Int类型) 会提示输入字符串的格式不正确      这是怎么回事,有没有什么好的方法可以解决???   谢谢了!!!

解决方案 »

  1.   

     事实上在 url 地址栏上的  www.abc.com/newsdetails-10.html  (假设你重写成这个样子) 那么IIS 还是会映射成 newsDisplay.aspx?id=10 到你的.net 程序的服务端。 对于你的.net来说还是 newsDisplay.aspx?id=10  所以Request.QueryString["id"]仍可以取到值
      

  2.   

    利用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"-->然后把检查文件是否存在的勾去掉这样就可以了,如果遇到“确定”按钮失效,可以用键盘事件编辑路径即可解决。
      

  3.   

    我刚才试过了,是在接受传递值的时候读错了,       我想问一下,在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>
    这个地方应该怎么写
        
      

  4.   

    可以了,现在是好的了。   不过又出现了一个新的问题       它总是会弹出这样一个对话框  Stack overflow at line:0      然后上面的图片就都显示不出来,这是怎么回事,难道页面上用了ajax的就不能再用这个了(我这个页面用了几个ajax来搞的)???
      

  5.   

    还有个问题,如果我一个页面要传两个参数,那在webconfig里面怎么配。   比如一个页面要传一个  id  跟一个 type   id是数字类型的,但type是字字符串类型的,那在webconfing里面要怎么样配, 好像在web.config里面不能用&这个字符吧。
      

  6.   

    Request.QueryString["id"].ToString()换成Request.QueryString[0].ToString()试试