当IIS7 UrlRewrite条件遇到时,未达到ASP.NET MVC BeginRequest

时间:2012-05-02 20:21:17

标签: iis-7 url-rewriting inversion-of-control ioc-container autofac

我有一个ASP.NET MVC应用程序,它在Global.asax的BeginRequest例程中设置一个Autofac IOCContainer。

一切正常,直到满足我的一个IIS7 UrlRwrite规则/条件,例如小写网址。我注意到,只要我在url中放置一个大写字母,所以当触发url重写规则时,就没有达到BeginRequest例程,但是EndRequest例程是。

我遇到的问题是IOCContainer永远不会在这种情况下设置,所以当EndRequest被触发并且我尝试处理web上下文/ ioc容器时,它会因为它从未在第一时间设置而出错

为什么在上述场景中永远不会达到BeginRequest,并且是否存在因此而产生的IOC问题的常见解决方法?

1 个答案:

答案 0 :(得分:0)

作为Autofac MVC集成一部分的AutofacDependencyResolver已经在每个HTTP请求开始时创建了一个新的生命周期范围,并在HTTP请求结束时将其处置。你不应该自己管理它。使用DependencyResolver机制时是否有此问题?

var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

您可以在Autofac wiki上找到有关MVC集成的更多信息。

http://code.google.com/p/autofac/wiki/Mvc3Integration