我在Application_BeginRequest中使用Context.RewritePath使我的网址用户友好,一切正常在我的本地机器上但在服务器上(共享)我得到404错误。你知道如何解决这个问题吗?
感谢
答案 0 :(得分:0)
您运行的是哪个IIS版本? 6?
据我所知,您要映射的网址必须是实体存在才能使其正常工作。
示例:/Page/Television/default.aspx应映射到/ page?id?= 5
您需要在解决方案中创建Folder Page / Televsion和default.aspx。 default.aspx不得包含超过“<%Page%>
的内容答案 1 :(得分:0)
在Cassini下,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;使用Cassini略有不同):
<system.webServer>
<modules>
. . .
<add name="RewriteExample" type="Samples.RewriteExample" />
</modules>
</system.webServer>