1

我已经使用IRewriteProviderinterface编写了一个自定义重写提供程序,并将其安装在 IIS 中。它工作正常,但我需要访问请求的内容以及 URL。一个新闻组张贴表明我应该能够访问HttpContext.Current,但在我的测试中它显示为null

有什么方法可以从重写提供程序访问请求内容?

4

2 回答 2

1

它很可能为 null,因为它从未处理任何上下文。如果你想根据内容修改 url,你应该在你的应用程序中实现一个自定义的 IHttpModule。

http://msdn.microsoft.com/en-us/library/ms972974.aspx

于 2013-08-07T20:10:20.827 回答
0

用于重写 URL 的 IHttpModule 类...

public class UrlRewriteModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        try
        {
            context.BeginRequest += new EventHandler(context_BeginRequest);
            context.EndRequest += new EventHandler(context_EndRequest);
        }
        catch (Exception exc)
        {
            ...special logging of exc...
        }
    }
    void context_BeginRequest(object sender, EventArgs e)
    {
        string fullOrigionalpath = Request.Url.ToString();
        Context.RewritePath("...whatever you want...");
    }
}

和 web.config...

<configuration>
  <system.web>
    <httpModules>
      <add name="UrlRewriteModule" type="UrlRewriteModule"/>
    </httpModules>
于 2013-08-07T23:09:56.707 回答