1

我有一个 asp.net 网站,我需要在其中使用 URL 重写,所以我编写了一个 HTTP 模块并且我已经实现了它并且它可以正常工作唯一的问题是当页面重定向到其相应的地址时,图像和样式是未加载。

这是http模块:

// 你的 BeginRequest 事件处理程序。

private void Application_BeginRequest(Object source, EventArgs e)
{
    HttpApplication application = (HttpApplication)source;
    string URL = application.Request.Url.ToString();
    //int pid = Convert.ToInt32(application.Request.QueryString["pid"]);

    if ((URL.ToLower().Contains(".aspx"))
        || (URL.ToLower().Contains(".js"))
        || (URL.ToLower().Contains(".css"))
        || (URL.ToLower().Contains(".gif"))
        || (URL.ToLower().Contains(".png"))
        || (URL.ToLower().Contains(".jpeg"))
        || (URL.ToLower().Contains(".jpe"))
        || (URL.ToLower().Contains(".jpg"))
        || (URL.ToLower().Contains(".ashx")))
        return;
    else
    {
        string mname = URL.Substring(URL.LastIndexOf("/") + 1).ToString();

        Merchand ms = merchantDB.GetMerchant(mname);

        HttpContext context = application.Context;
        if (ms != null)
        {

            string url = "~/pages/Merchant.aspx?mid=" + ms.MerchandID + "&catid=" + ms.MainCategory + "&subcatid=0";
            context.RewritePath(VirtualPathUtility.ToAppRelative(url));
        }
        else
        {
            //("");
            string url = "~/pages/default.aspx";
            context.RewritePath(VirtualPathUtility.ToAppRelative(url));
        }
    }

}

当我从它的正常 URL 打开页面时,它可以正常打开,但是当我使用 URL 时,它会重新打开,但没有图像或样式。

当我打开 firebug 时,我收到一个错误,即找不到 css 和 javascript

4

1 回答 1

1

要使用 IIS 进行重写,请执行以下操作:

  1. 在 system.webserver 标签的 web.config 中注册 httpmodule:
<modules>
<add name="Rewrite" type="Rewrite"/>
</modules>
  1. 改变这个: context.RewritePath(VirtualPathUtility.ToAppRelative(url)); 为此: context.RewritePath(url, false);
  2. 使您的图像在服务器上运行并将它们的路径放置为 ~/images/imagename
于 2012-10-29T10:58:46.653 回答