为什么UrlRewrite在调试通过,但上传到服务器就找不到文件?
本地调试:http://localhost:2222/Test/324.aspx 会显示324
服务器 :http://chjl.cn/Test/324.aspx 就找不到文件了,大家可以进入看看
而在服务器新建一个/test/324.aspx也可以通过,为什么会这样?--------------------------------------------------------------------------------
/test/read.aspx<%
Response.Write(Request["ID"]);
%>
--------------------------------------------------------------------------------/UrlRewrite.config<?xml version="1.0" encoding="gb2312" ?>
<NewDataSet>
<rule>
<old>/Test/(\d+)\.aspx</old>
<new>/Test/Read.aspx?ID=$1</new>
</rule>
</NewDataSet>
--------------------------------------------------------------------------------global.asax.cs中 protected void Application_BeginRequest(Object sender, EventArgs e)
{
DataSet dataSet =new DataSet();
dataSet.ReadXml(this.Server.MapPath("/UrlRewrite.config")); DataTable table=dataSet.Tables[0]; string rawUrl=Request.RawUrl;
Regex regex;
foreach(DataRow row in table .Rows)
{
regex=new Regex(row["old"].ToString(), RegexOptions.IgnoreCase);
if(regex.IsMatch(rawUrl))
{
Context.RewritePath(regex.Replace(rawUrl, row["new"].ToString()));
break;
}
}
}
--------------------------------------------------------------------------------
本地调试:http://localhost:2222/Test/324.aspx 会显示324
服务器 :http://chjl.cn/Test/324.aspx 就找不到文件了,大家可以进入看看
而在服务器新建一个/test/324.aspx也可以通过,为什么会这样?--------------------------------------------------------------------------------
/test/read.aspx<%
Response.Write(Request["ID"]);
%>
--------------------------------------------------------------------------------/UrlRewrite.config<?xml version="1.0" encoding="gb2312" ?>
<NewDataSet>
<rule>
<old>/Test/(\d+)\.aspx</old>
<new>/Test/Read.aspx?ID=$1</new>
</rule>
</NewDataSet>
--------------------------------------------------------------------------------global.asax.cs中 protected void Application_BeginRequest(Object sender, EventArgs e)
{
DataSet dataSet =new DataSet();
dataSet.ReadXml(this.Server.MapPath("/UrlRewrite.config")); DataTable table=dataSet.Tables[0]; string rawUrl=Request.RawUrl;
Regex regex;
foreach(DataRow row in table .Rows)
{
regex=new Regex(row["old"].ToString(), RegexOptions.IgnoreCase);
if(regex.IsMatch(rawUrl))
{
Context.RewritePath(regex.Replace(rawUrl, row["new"].ToString()));
break;
}
}
}
--------------------------------------------------------------------------------
http://localhost:2222/Test/324.aspx
表示你的是一个站点,而
http://chjl.cn/Test/324.aspx
这一句,你是个虚拟目录,所以两者看起来一样,但实际上对不上号.
你在本地把你的网站改为虚拟目录,然后再在本地运行,此时本地可能也不行.
你需要修改你的路径.
<%
Response.Write("Request.ApplicationPath=" +Request.ApplicationPath);
Response.Write("<br>");
Response.Write("Request.Path=" + Request.Path);
Response.Write("<br>"); Response.Write("Request.PathInfo=" +Request.PathInfo);
Response.Write("<br>");
Response.Write("Request.QueryString=" +Request.QueryString);
Response.Write("<br>");
Response.Write("Request.RawUrl=" +Request.RawUrl);%>Request.ApplicationPath=/
Request.Path=/Test/a.aspx
Request.PathInfo=
Request.QueryString=
Request.RawUrl=/Test/a.aspx