我在Application_BeginRequest中使用Context.RewritePath使我的url用户友好,一切工作正常在我的本地机器上,但在服务器上(共享)我得到404错误。你有什么想法我该如何解决这个问题?Url重写不工作在服务器上
谢谢
我在Application_BeginRequest中使用Context.RewritePath使我的url用户友好,一切工作正常在我的本地机器上,但在服务器上(共享)我得到404错误。你有什么想法我该如何解决这个问题?Url重写不工作在服务器上
谢谢
您正在运行哪个IIS版本? 6?
据我所知,你想映射的URL必须是物理存在的,才能做到这一点。
例子:??/Page/Television/default.aspx应该映射到/页ID = 5
您需要创建文件夹页/ Televsion和您的解决方案的Default.aspx。 该Default.aspx的不得含有超过“<%页%>
在卡西尼号,运行的Application_BeginRequest所有文件。在IIS,它只能运行与管理的处理器,如* .aspx文件的文件。
更多对于一般情况下,你需要创建自己的HttpModule下面是一个例子(基于从我的书一个类似的:Ultra-Fast ASP.NET):
using System;
using System.Web;
namespace Samples
{
public class RewriteExample : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += OnBeginRequest;
}
void OnBeginRequest(object sender, EventArgs e)
{
HttpApplication application = (HttpApplication)source;
HttpContext context = application.Context;
// re-write URL here...
}
public void Dispose()
{
}
}
}
然后在web.config中注册它(这是对于IIS;使用卡西尼略有不同):
<system.webServer>
<modules>
. . .
<add name="RewriteExample" type="Samples.RewriteExample" />
</modules>
</system.webServer>
如何创建HttpModule?你能举个例子吗? 谢谢 – user220994
添加示例... – RickNZ