我在C#中使用ASP.NET(Visual Studio 2015)。我在Global.asax
文件中实现了以下代码段:
void Application_BeginRequest(object sender, EventArgs e)
{
//Removes requirement of having ".aspx" in the URL
String WebsiteURL = Request.Url.ToString();
String[] SplitedURL = WebsiteURL.Split('/');
String[] Temp = SplitedURL[SplitedURL.Length - 1].Split('.');
// This is for aspx page
if (!WebsiteURL.Contains(".aspx") && Temp.Length == 1)
{
if (!string.IsNullOrEmpty(Temp[0].Trim()))
Context.RewritePath(Temp[0] + ".aspx");
}
}
这样,而不是在页面URL中强制扩展:
我可以省略扩展程序以重定向到同一页面:
现在的问题是,如果我向URL添加查询字符串,它就无法再找到该页面了。例如:
导致404 Not Found错误。
即使隐藏了扩展程序,如何才能使查询字符串正常工作?
答案 0 :(得分:2)
void Application_BeginRequest(object sender, EventArgs e)
{
//Removes requirement of having ".aspx" in the URL
Uri uri = this.Request.Url;
string path = uri.AbsolutePath;
if (!string.IsNullOrEmpty(path) && path != "/" && path.IndexOf('.') == -1)
{
path = path + ".aspx";
string query = uri.Query;
string url = path + query;
Context.RewritePath(url);
}
}
试试上面的代码。正如VDWWD所提到的,最好的方法是使用IIS URL重写器。