2010-01-02 26 views
0

我在Application_BeginRequest中使用Context.RewritePath使我的url用户友好,一切工作正常在我的本地机器上,但在服务器上(共享)我得到404错误。你有什么想法我该如何解决这个问题?Url重写不工作在服务器上

谢谢

回答

0

您正在运行哪个IIS版本? 6?

据我所知,你想映射的URL必须是物理存在的,才能做到这一点。

例子:??/Page/Television/default.aspx应该映射到/页ID = 5

您需要创建文件夹页/ Televsion和您的解决方案的Default.aspx。 该Default.aspx的不得含有超过“<%页%>

0

在卡西尼号,运行的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> 
+0

如何创建HttpModule?你能举个例子吗? 谢谢 – user220994

+0

添加示例... – RickNZ