有一条这样的规则:
<Rule key="^/topic-(\d+)-(\d+).html" value="/Detail.aspx?bid=$1%26sid=$2" />
在Detail.aspx调试的时候,我用Request.Querstring无法取到sid的值。整个串格式如:bid=100%26sid=155这样子。
请问如何解决?
<Rule key="^/topic-(\d+)-(\d+).html" value="/Detail.aspx?bid=$1%26sid=$2" />
在Detail.aspx调试的时候,我用Request.Querstring无法取到sid的值。整个串格式如:bid=100%26sid=155这样子。
请问如何解决?
中间加个&试下
用topic-100-155.html这样的形式访问可以重写到Detail.aspx这个页面上来,并且用Request.QueryString取到
的值是bid=100%26sid=155。。取不到sid的值。
呵呵
%26用 &表示呢
我没有测试过 bid=100%26sid=155
是否能被Request.QuerString 解析到,你应该可以在Rewrite里面做二次运行的
string url = 刚才匹配到的url
HttpContext.Current.RewritePath(url.Replace("%26","&"));
public class Rewrite : System.Web.IHttpModule
{
public void Init(HttpApplication application)
{
application.AuthorizeRequest += new EventHandler(application_AuthorizeRequest);
}
void application_AuthorizeRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)sender;
HttpContext context = application.Context;
string oriurl = context.Request.Url.ToString();
string url = context.Request.Path;
if (url == "/Tradeshow")
{
context.RewritePath("~/TradeShows/TradeShowList.aspx");
}
if( url.ToLower().EndsWith(".js")||
url.ToLower().EndsWith(".css") ||
url.ToLower().EndsWith(".gif") ||
url.ToLower().EndsWith(".jpg") ||
url.ToLower().EndsWith(".doc") ||
url.ToLower().EndsWith("asmx") ||
url.ToLower().EndsWith("axd") ||
url.ToLower().EndsWith("aspx") ||
url.ToLower().EndsWith("asp")
)return;
string match = Rules.Match(url);
if (match == string.Empty) return;
context.RewritePath(match);
}
public void Dispose()
{ } } public class Rules : System.Collections.CollectionBase
{
static System.Collections.Hashtable rules = new System.Collections.Hashtable(); static Rules()
{
rules.Clear();
//用户网站
rules.Add("^/([a-zA-Z0-9]+)\\.co/home/?$", "~/EnterpriseWeb/Home.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/AboutUs/?$", "/EnterpriseWeb/AboutUs.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/ProductList/([0-9]+)/?$", "/EnterpriseWeb/ProductsList.aspx?Categorid=$2&member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/ProductList/?$", "/EnterpriseWeb/ProductsList.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/ProductDetail/([0-9]+)/?$", "/EnterpriseWeb/ProductDetail.aspx?productid=$2&member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/ContactInfo/?$", "/EnterpriseWeb/ContactInfo.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/Showlist/?$", "/EnterpriseWeb/Showlist.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/OfferList/?$", "/EnterpriseWeb/OfferList.aspx?member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/OfferList/([0-9]+)/?$", "/EnterpriseWeb/OfferList.aspx?Categorid=$2&member=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co/Offerdetail/([0-9]+)/?$", "/EnterpriseWeb/Offerdetail.aspx?tradeid=$2&member=$1"); //多重目录
rules.Add("/Buy/(.+)/category", "~/BuySubCategories.aspx?Categorid=$1");
rules.Add("/Sell/(.+)/category", "~/SellSubCategories.aspx?Categorid=$1");
rules.Add("^/([a-zA-Z0-9]+)\\.co$", "~/EnterpriseWeb/AboutUs.aspx?member=$1");
rules.Add("/BuyList/category", "~/BuyList.aspx");
rules.Add("/SellList/category", "~/SellList.aspx");
rules.Add("/SellList/([0-9]+)/category", "~/SellList.aspx?Categorid=$1");
rules.Add("/BuyList/([0-9]+)/category", "~/BuyList.aspx?Categorid=$1");
//单级目录
rules.Add("^/Buy$", "~/Buy.aspx");
rules.Add("^/Sell$", "~/Sell.aspx");
rules.Add("^/Trade[Ss]how/?$", "~/TradeShows/TradeShowList.aspx");
rules.Add("^/Member$", "~/MemberArea/Default.aspx");
rules.Add("^/Default$", "~/Default.aspx");
rules.Add("^/Home$", "~/Default.aspx");
} public static string Match(string url)
{
foreach (string s in rules.Keys)
{
if (System.Text.RegularExpressions.Regex.IsMatch(url, s))
{
return Regex.Replace(url, s,rules[s].ToString(), RegexOptions.Compiled | RegexOptions.IgnoreCase);
break;
}
} return string.Empty;
}
}