我需要一种方法来编写无扩展名的网址。我的服务器是IIS6.0版本1的共享主机。当前我使用的是UrlRewriting.Net dll,它仅支持IIS7。
我原来的网址是abc.xyz.in/Index.aspx?c=comp_Name; 我的虚拟网址是abc.xyz.in/comp_Name.aspx,但我希望它为abc.xyz.in/comp_Name
是否可以通过任何其他模块或任何其他模块。请注意我的主机是共享主机。因此,我无法自行配置IIS或强制我的管理员对其进行修改。
答案 0 :(得分:1)
IIS6(及旧版本)中的自定义路由问题是,除非您要求.aspx,.ashx,.asmx文件,否则它们默认不会调用ASP.Net模块。有一些解决方案使用自定义错误来检查您尝试访问的内容,然后显示正确的页面,但这不是一个非常好的解决方案(但如果您真的想要阅读更多关于它的信息,那么有一个样本结束了在CodeProject:http://www.codeproject.com/Articles/44475/IIS-vs-ASP-NET-URL-Rewriting)。
我的建议是让你的webhost为ASP.Net添加一个通配符映射,以便它处理你网站的所有传入请求,这样你就可以编写一个合适的路由模块,他们可能没有必要,但是没有任何伤害。询问,它可以很容易地在网站上设置。如果这是不可能的,那么您应该寻找一个新的虚拟主机,它可以满足您网站的需求,而不是让您的网站适应当前的虚拟主机。
答案 1 :(得分:0)
您好需要编写自己的HttpModule。 这是一个很好的例子(it is from here): 看看该网站,它将描述所需的所有步骤。
using System;
using System.Web;
public class DavModule : IHttpModule {
private HttpApplication context = null;
public void Dispose() {
context.BeginRequest -= new EventHandler(context_BeginRequest);
}
public void Init(HttpApplication context) {
this.context = context;
this.context.BeginRequest += new EventHandler(context_BeginRequest);
}
void context_BeginRequest(object sender, EventArgs e) {
HttpApplication app = (HttpApplication) sender;
app.Response.ContentType = "text/plain";
if (app.Request.Path.EndsWith("Help"))
app.Server.Transfer("Help.aspx");
else {
app.Response.Write("Path: " + app.Request.Path);
app.Response.End();
}
}
}
答案 2 :(得分:0)
如果你刚开始(或者这样做是一个选项),问题就变成你(你的主人)是否在IIS(6或7)上有ASP.Net 4。 / p>
无扩展网址是ASP.Net 4的一部分 - 这意味着您的 ASP.Net 网站(您想要无扩展网址工作)必须在ASP.net 4上运行(不是v2.x)...
... H个