App_Browsers/RewriteForm.browser
<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
adapterType="HtmlFormAdapter" />
</controlAdapters>
</browser>
</browsers>
========================================
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
public class FormRewriteTextWriter : HtmlTextWriter
{
private string rewriteUrl = HttpContext.Current.Request.ServerVariables["HTTP_X_REWRITE_URL"];
private bool isFrom = false;
public FormRewriteTextWriter(TextWriter writer)
: base(writer)
{
if (writer is HtmlTextWriter)
this.InnerWriter = (writer as HtmlTextWriter).InnerWriter;
else
this.InnerWriter = writer;
}
public override void WriteBeginTag(string tagName)
{
if (!string.IsNullOrEmpty(rewriteUrl))
{
if (string.Equals(tagName, "form", StringComparison.OrdinalIgnoreCase))
this.isFrom = true;
}
base.WriteBeginTag(tagName);
}
public override void WriteAttribute(string name, string value, bool encode)
{
if (!string.IsNullOrEmpty(rewriteUrl))
{
if (this.isFrom && name.Equals("action", StringComparison.OrdinalIgnoreCase))
value = rewriteUrl;
}
base.WriteAttribute(name, value, encode);
}
}
=========================================
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Web.UI.Adapters;
public class HtmlFormAdapter : ControlAdapter
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
base.Render(new FormRewriteTextWriter(writer));
}
}
=====================================
RewriteRule ^/test/(/d+).html$ /test/d.aspx?p=$1 [I,L,U]
I = Do case-insensitive matching
L = Last test if match(如果已经匹配,将不在继续匹配下去)
U = Store original url in server Variable HTTP_X_REWRITE_URL(保存原始的url到HTTP_X_REWRITE_URL服务器变量中。)
=================================================
更多资料
http://www.bingzhuo.com/log.php?id=33
http://cheeso.members.winisp.net/IIRF.aspx
http://hi.baidu.com/wzyao/blog/item/a58a6b7f4571df0b28388adb.html
http://www.cnblogs.com/JeffreyZhao/archive/2006/12/27/604373.html