我在ASP.Net MVC 3.0上使用http://code.google.com/p/autofac/wiki/MultitenantIntegration版本2.4.4和Autofac 2.4.4。
我使用新的Asp.Net MVC 3支持(使用AutofacDependencyResolver)。我遇到一个问题,即租户识别策略类(实现ITenantIdentificationStrategy)抛出“请求在此上下文中不可用”异常。
我尝试使用AutofacContrib.Multitenant.Web.RequestParameterTenantIdentificationStrategy类,它也会抛出相同的异常。
我的application_start看起来如下
protected void Application_Start()
{
//wire up all the necessary objects used in this web application
IContainer container = BootStrap.RegisterAll().Build();
//multi tenant support
MultitenantContainer multiTenant = new MultiTenancy().Register(container);
DependencyResolver.SetResolver(new AutofacDependencyResolver(multiTenant.BeginLifetimeScope()));
}
答案 0 :(得分:2)
没关系。 IIS 7.0中的Application_Start中不提供HttpContext.Current.Request。唯一的解决方案是捕获HTTPException并在Catch处将TenantId设置为null并返回false。
public bool TryIdentifyTenant(out object tenantId)
{
var current = HttpContext.Current;
try
{
if (current == null)
{
tenantId = null;
return false;
}
var request = current.Request;
}
catch (HttpException)
{
tenantId = null;
return false;
}
//continue with your tenant identification
}