利用URLRewriter.dll 转为静态重写后的地址
http://localhost:3628/IThome/web/lookinfo/5029.html重写前的地址
http://localhost:3628/IThome/web/lookinfo.aspx?id=5029
现在能实现把页面改成伪静态了,但是在改成后的页面点击登录按钮的时候页面会突然刷新下把地址又变回了原先没重写的样子了http://localhost:3628/IThome/web/lookinfo.aspx?id=5029这是怎么回事?希望高手指点下.本人QQ806778705  回答的最好能详细点回答..刚刚接触这玩意不久哦

解决方案 »

  1.   

    Web.Config里配置UrlRewriter :
    <RewriterConfig>
            <Rules>
                <RewriterRule>
                    <LookFor>~/IThome/web/lookinfo/(.[\d]*).html</LookFor>
                    <SendTo>~/IThome/web/lookinfo.aspx?id=$1</SendTo>
                </RewriterRule>
            </Rules>
    </RewriterConfig>
      

  2.   

    楼上我。我那个webconfig早就配置了哦你看看这个问题
    处理回发
    在重写后的url里如果产生回发,例如有一个按钮,又调用了该被重写的aspx,用户浏览器中将会显示该aspx文件实际的地址,也就是http: //hostname/default.aspx?id=11。但从用户的角度考虑,如 果单击按钮时突然看到 URL 更改会使他们感到不安。因此必须解决这个问题。
      

  3.   

    那你直接写不久行了吗,你想实现伪静态的,行,这样写假如你的跳转地址是这样的<a href="Default2.aspx?id=123">标题</a>跳转的时候就是跳到default2.aspx啊,没错啊!
      

  4.   

    重写HtmlForm控件,把action属性去掉。搜索一下actionlessform
      

  5.   

    其实直接在render的时候把action去掉就可以了,不过这样的话如果页面里有updatepanel就又会出错了,需要自己用jquery实现ajax
      

  6.   

    这个是正确的。URL 重写都为了传说中的SEO。搜索引擎找到页面你的html就得了,至于登录后变成aspx,它才不管你,用户也不在乎你的url怎么样。搜索不会去登录会员账号的。
      

  7.   

    。但是用户他看到URL变了有的人会起疑心的
      

  8.   

    Page_Load 加入 this.Form.Action = Request.RawUrl;
      

  9.   

    public class FormRewriterControlAdapter:System.Web.UI.Adapters.ControlAdapter
    {
        public FormRewriterControlAdapter()
         {
            //
            //TODO: 在此处添加构造函数逻辑
            //
         }    protected override void Render(HtmlTextWriter writer)
         {
            base.Render(new RewriteFormHtmlTextWriter(writer));
         }
    }public class RewriteFormHtmlTextWriter:HtmlTextWriter
    {
        /// <summary>
        /// 调用基类的构造方法
        /// </summary>
        /// <param name="writer"></param>
        public RewriteFormHtmlTextWriter(HtmlTextWriter writer):base(writer)
         {
            this.InnerWriter = writer.InnerWriter;
         }    public RewriteFormHtmlTextWriter(System.IO.TextWriter writer):base(writer)
         {
            
            base.InnerWriter = writer;
         }    public override void WriteAttribute(string name, string value, bool fEncode)
         {
            if (name == "action")
             {
                 HttpContext context = HttpContext.Current;            if (context.Items["ActionAlreadyWritten"] == null)
                 {
                     value = context.Request.RawUrl;                 context.Items["ActionAlreadyWritten"] = true;
                 }
             }
            base.WriteAttribute(name, value, fEncode);
         }
    }
    <browser refID="Default">
        <controlAdapters>
          <adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
                    adapterType="FormRewriterControlAdapter" />
        </controlAdapters>
      </browser>
      

  10.   

    伪静态回发 public class Form : System.Web.UI.HtmlControls.HtmlForm
         {
             protected override void RenderAttributes(HtmlTextWriter writer)
             {
                 writer.WriteAttribute("name", this.Name);
                 base.Attributes.Remove("name");
                 writer.WriteAttribute("method", this.Method);
                 base.Attributes.Remove("method");
                 this.Attributes.Render(writer);
                 base.Attributes.Remove("action");
                 if (base.ID != null)
                     writer.WriteAttribute("id", base.ClientID);
             }
         }<%@ Register TagPrefix="skm" Namespace="ActionlessForm" Assembly="ActionlessForm" %> 
     
     <form runat="server"></form>
     //替换为: 
     <skm:Form id="Form1" method="post" runat="server"></skm:Form>