大部分url重写的需求是伪静态,当然有很多第三方开源组件,但是这种需求的核心方法其实就是context.rewritePath()

要是系统像ARR那样,用重写做代理和反向代理,一般的重写就不行了,context.rewritePath()的内部不允许跨站点的url。

你可能会想到实现自己的IHttpHandler,这样有个问题就是,静态资源的url没法重写。

那怎么办?

 

我通过查context.rewritePath()内部方法是:

     [DllImport("webengine4.dll", CharSet = CharSet.Unicode)]
        internal static extern int MgdRewriteUrl(IntPtr pRequestContext, string pszUrl, bool fResetQueryString);

这个方法的关键是怎么获取到当前请求上下文context的句柄?

静态资源重写的关键问题是怎么捕获到静态资源的请求?

 

 <system.webServer>
    <handlers>
      <remove name="StaticFile" />
这样就可以在IHttpHandler中捕获静态资源的请求了

 

我尝试实现ARR的扩展程序,注册GAC后,找不到注册的DLL

相关文章:

  • 2021-05-30
  • 2022-12-23
  • 2022-12-23
  • 2021-12-14
  • 2022-12-23
猜你喜欢
  • 2021-05-07
  • 2021-09-17
  • 2022-02-18
  • 2022-02-20
  • 2022-12-23
  • 2022-12-23
  • 2021-09-27
相关资源
相似解决方案