设定:
-Asp.net MVC网站(siteA),在global.ascx中实现了application_error处理程序,在web.config中只有一个规则(反向代理重写规则)。
-IIS反向代理设置,其中siteA的/子目录指向siteB域。
-IIS重写模块已移至siteA的IIS模块列表顶部。
问题:
反向代理配置适用于除了web.config中的iis重写规则之外的IIS文件夹中没有任何内容的testsiteA。没有其他文件夹,文件等。这个testsiteA工作得很好,因为重写规则可以像目标一样工作。但是,当我将相同的规则应用于真实站点siteA时,有一个asp.net MVC网站托管的重写规则永远不会被处理。而是在global.ascx中到达application_error处理程序,并且不处理URL重写规则的处理。我试过做Response.End(),清除服务器错误,基本'返回'。结束执行的语句,都在application_error处理程序中但没有一个有效。
如何让IIS或asp.net管道将URL重写作为最高优先级?
答案 0 :(得分:0)
添加一些日志记录后(我无法在调试模式下调用错误处理程序),我发现我们的控制器IoC无法解析子目录路径(我也将其从磁盘中删除了)。要解决此问题并让URL重写处理,我只需添加一个
routes.IgnoreRoute("子目录/ {} PATHINFO }&#34);
到RouteConfig.cs。