我正在尝试将Hyprlinkr与 Autofac集成到 WebAPI 项目中。
我已经开始编写自定义IHttpControllerActivator
,但在尝试解析控制器时出现以下异常:
从请求实例的范围中看不到带有与“AutofacWebRequest”匹配的标记的范围。这通常表明注册为 per-HTTP 请求的组件正在由 SingleInstance() 组件(或类似场景)请求。在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身.
下面是这个类的样子:
public class AutofacControllerActivator : IHttpControllerActivator
{
private readonly IContainer _container;
public AutofacControllerActivator(IContainer container)
{
if (container == null) throw new ArgumentNullException("container");
_container = container;
}
public IHttpController Create(HttpRequestMessage request, HttpControllerDescriptor controllerDescriptor, Type controllerType)
{
var linker = _container.ResolveOptional<RouteLinker>(
new TypedParameter(typeof(HttpRequestMessage), request));
return (IHttpController) _container.Resolve(controllerType,
new TypedParameter(typeof(IResourceLinker), linker));
}
}
如何解决生命周期问题?