记录rewrite url我之前不知道的地方

大部分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

posted @ 2016-03-31 11:04  二师弟tl  阅读(403)  评论(0编辑  收藏  举报