Url重写不在服务器上运行

时间:2010-01-02 10:43:19

标签: asp.net url-rewriting

我在Application_BeginRequest中使用Context.RewritePath使我的网址用户友好,一切正常在我的本地机器上但在服务器上(共享)我得到404错误。你知道如何解决这个问题吗?

感谢

2 个答案:

答案 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>