0

我得到错误:

“无法创建请求生命周期范围,因为 HttpContext 不可用。”

如果我尝试设置我的 web api。

HttpContext 在 System.Web.Http.SelfHost 中不可用,但有替代方案吗?

我的 AuthenticationHandler 示例:

    public class AuthenticationHandler : DelegatingHandler
    {
        private const string m_AuthenticationScheme = "Basic";
        protected override System.Threading.Tasks.Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, System.Threading.CancellationToken cancellationToken)
        {
            AuthenticationHeaderValue authenticationHeader = request.Headers.Authorization; //get the authorization header

            if (authenticationHeader != null && authenticationHeader.Scheme == m_AuthenticationScheme) 
            {
                Credentials credentials = authenticationHeader.ParseAuthenticationHeader();

                if (credentials != null)
                {   
                    IMyClass procadCredentials = DependencyResolver.Current.GetService<IMyClass>(); //thows the InvalidOperationException if I use self-hosting
//tried: "Autofac.Integration.Mvc.AutofacDependencyResolver.Current.RequestLifetimeScope.Resolve<IMyClass>();" too.

我收到了 InvalidOperationException 消息:

无法创建请求生命周期范围,因为 HttpContext 不可用。

IMyClass 像这样在 global.asax 中注册:

m_builder.Register<IMyClass>((c, p) =>
            {
//...
//return ...
}

虽然 IIS 托管,它工作正常,但使用自托管,带 AutoFac 的 IoC 失败。

4

1 回答 1

0

您正在使用带有 Web API 的 Autofac 的 MVC 集成包,而您确实应该使用Autofac.WebApi http://nuget.org/packages/Autofac.WebApi

您可以在此处阅读更多相关信息 - http://alexmg.com/post/2012/09/01/New-features-in-the-Autofac-MVC-4-and-Web-API-(Beta)-Integrations。 aspx

于 2013-01-28T13:28:09.053 回答