2014-09-19 6 views
5

मेरा एल्माह लॉग यह त्रुटि दिखा रहा है। यह हर अनुरोध के साथ नहीं हो रहा है। यह intermittently हो रहा है। एमवीसी 5.2, वेब एपीआई 2.2, एएसपी.नेट पहचान 2 और एज़ूर वेबसाइट मेरा पर्यावरण है। अद्यतन: यहाँ मेरी Startup.cs,एल्मा दिखा रहा है, "कोई ओविन प्रमाणीकरण प्रबंधक अनुरोध से जुड़ा हुआ नहीं है।"

 OAuthOptions = new OAuthAuthorizationServerOptions() 
     { 
      AllowInsecureHttp = true, 
      TokenEndpointPath = new PathString("/token"), 
      AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(settings.AccessTokenExpireTimeSpanInMinutes), 
      Provider = new MyAuthorizationServerProvider(), 
      RefreshTokenProvider = new MyRefreshTokenProvider() 
     }; 
     // Web API configuration and services 
     // Configure Web API to use only bearer token authentication. 
     GlobalConfiguration.Configuration.SuppressDefaultHostAuthentication(); 
     GlobalConfiguration.Configuration.Filters.Add(new HostAuthenticationFilter(OAuthOptions.AuthenticationType)); 
     app.UseOAuthAuthorizationServer(OAuthOptions); 
     app.UseOAuthBearerAuthentication(OAuthBearerOptions); 

     GlobalConfiguration.Configuration.SuppressDefaultHostAuthentication(); 
     GlobalConfiguration.Configuration.Filters.Add(new HostAuthenticationFilter(OAuthOptions.AuthenticationType)); 

इस No OWIN authentication manager is associated with the request लेकिन काम नहीं कर रहा

System.InvalidOperationException: No OWIN authentication manager is associated with the request. 
    at System.Web.Http.HostAuthenticationFilter.GetAuthenticationManagerOrThrow(HttpRequestMessage request) 
    at System.Web.Http.HostAuthenticationFilter.<AuthenticateAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__24.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Controllers.AuthenticationFilterResult.<ExecuteAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Tracing.Tracers.HttpControllerTracer.<ExecuteAsyncCore>d__5.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__18`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Owin.PassiveAuthenticationMessageHandler.<SendAsync>d__0.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__18`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.Tracing.ITraceWriterExtensions.<TraceBeginEndAsyncCore>d__18`1.MoveNext() 
--- End of stack trace from previous location where exception was thrown --- 
    at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) 
    at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) 
    at System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext() 

मैं अपने पीसी में यह reproduct करने में सक्षम था की जांच की गई है। बस ऐप डोमेन को पुनरारंभ करें और एपीआई को एक अनुरोध भेजें। मुझे उपरोक्त त्रुटि मिल जाएगी। उसके बाद सब ठीक हो जाएगा। यहां मेरी स्थानीय मशीन से स्टैकट्रेस है,

Project.Api.dll!Project.Api.Helpers.ElmahExceptionHandler.Handle(System.Web.Http.ExceptionHandling.ExceptionHandlerContext context) Line 22 C# 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.ExceptionHandler.HandleAsync(System.Web.Http.ExceptionHandling.ExceptionHandlerContext context, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.ExceptionHandler.System.Web.Http.ExceptionHandling.IExceptionHandler.HandleAsync(System.Web.Http.ExceptionHandling.ExceptionHandlerContext context, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.LastChanceExceptionHandler.HandleAsync(System.Web.Http.ExceptionHandling.ExceptionHandlerContext context, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore() Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore>(ref System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore stateMachine) Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore>(ref System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore stateMachine) Unknown 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsyncCore(System.Web.Http.ExceptionHandling.IExceptionHandler handler, System.Web.Http.ExceptionHandling.ExceptionHandlerContext context, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.dll!System.Web.Http.ExceptionHandling.ExceptionHandlerExtensions.HandleAsync(System.Web.Http.ExceptionHandling.IExceptionHandler handler, System.Web.Http.ExceptionHandling.ExceptionContext context, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.dll!System.Web.Http.HttpServer.SendAsync() Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<System.Web.Http.HttpServer.SendAsync>(ref System.Web.Http.HttpServer.SendAsync stateMachine) Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.__Canon>.Start<System.Web.Http.HttpServer.SendAsync>(ref System.Web.Http.HttpServer.SendAsync stateMachine) Unknown 
System.Web.Http.dll!System.Web.Http.HttpServer.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) Unknown 
System.Net.Http.dll!System.Net.Http.HttpMessageInvoker.SendAsync(System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) Unknown 
System.Web.Http.WebHost.dll!System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore() Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start<System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore>(ref System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore stateMachine) Unknown 
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.Start<System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore>(ref System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore stateMachine) Unknown 
System.Web.Http.WebHost.dll!System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsyncCore(System.Web.HttpContextBase contextBase) Unknown 
System.Web.Http.WebHost.dll!System.Web.Http.WebHost.HttpControllerHandler.ProcessRequestAsync(System.Web.HttpContext context) Unknown 
System.Web.dll!System.Web.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest.AnonymousMethod__0() Unknown 
System.Web.dll!System.Web.TaskAsyncHelper.BeginTask(System.Func<System.Threading.Tasks.Task> taskFunc, System.AsyncCallback callback, object state) Unknown 
System.Web.dll!System.Web.HttpTaskAsyncHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(System.Web.HttpContext context, System.AsyncCallback cb, object extraData) Unknown 
System.Web.dll!System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() Unknown 
System.Web.dll!System.Web.HttpApplication.ExecuteStep(System.Web.HttpApplication.IExecutionStep step, ref bool completedSynchronously) Unknown 
System.Web.dll!System.Web.HttpApplication.PipelineStepManager.ResumeSteps(System.Exception error) Unknown 
System.Web.dll!System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext context, System.AsyncCallback cb) Unknown 
System.Web.dll!System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest wr, System.Web.HttpContext context) Unknown 
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown 
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown 
[Native to Managed Transition] 
[Managed to Native Transition] 
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown 
System.Web.dll!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(System.IntPtr rootedObjectsPointer, System.IntPtr nativeRequestContext, System.IntPtr moduleData, int flags) Unknown 
[AppDomain Transition] 

मैं ओएथ सर्वर का उपयोग नहीं कर रहा हूं जो एसपीए टेम्पलेट में उपलब्ध है।

config.SuppressDefaultHostAuthentication(); 
config.Filters.Add(new HostAuthenticationFilter(Startup.OAuthOptions.AuthenticationType)); 
+0

सुंदर प्रश्नोत्तरी। यदि आप ** Startup.Auth.cs ** फ़ाइल में 'ConfigureAuth' विधि जोड़ते हैं तो निदान करना बेहतर होगा। एक बात मुझे लगता है कि, आपके प्रमाणीकरण तर्क में कुछ मामलों में बहुत लंबा समय लगता है या किसी भी तर्क से कोई प्रतिक्रिया नहीं होती है। – Youngjae

+0

@ यौन्जे, इसकी शुरुआत Startup.Auth.cs में है। मुझे यह त्रुटि केवल तब ही मिल रही है जब एपडोमेन पुनरारंभ होता है। – user960567

+0

// मेरा मतलब है, कृपया 'कॉन्फ़िगरऑथ' विधि जोड़ने के लिए इस पोस्ट को संपादित करें। – Youngjae

उत्तर

1

फ़िक्स का उपयोग Microsoft.AspNet.WebApi.Owin (UseOwinMethod) का उपयोग करना है। इसने Server cannot append header after HTTP headers have been sent. भी तय किया। मैं इस पैकेज में एक बग जो भी हो काम के आसपास Why MessageHandler is executing in MVC request? संबंधित http://katanaproject.codeplex.com/discussions/540202

0

आप अपने एपीआई में ओविन संदर्भ तक पहुंचने का प्रयास कैसे कर रहे हैं? WebApi में, आपको Request.GetOwinContext() का उपयोग करना चाहिए (जैसा कि HttpContext.GetOwinContext() के विपरीत है जिसे आप एक एमवीसी में उपयोग करेंगे)।

+0

जोड़ दी है, मैं कुछ भी नहीं कर रहा हूं। यह मेरा कोड नहीं है। मैं वेब एपीआई में बेयरर प्रमाणीकरण का उपयोग कर रहा हूं। त्रुटि HostAuthenticationFilter में आ रही है। मेरे पास 'config.Filters.Add (नया होस्ट प्रमाणीकरणफिल्टर (स्टार्टअप.ऑथऑथऑप्शन। प्रमाणीकरण टाइप));' http://blogs.msdn.com/b/webdev/archive/2013/09/20/understanding-security-features से लिया गया -इन-स्पा-टेम्पलेट.एएसपीएक्स? पेजइंडेक्स = 1 # टिप्पणियां – user960567

1

मैं एक तीसरे पक्ष के मूल प्रमाणीकरण मिडलवेयर (Thinktecture.IdentityModel.Owin.BasicAuthentication) का उपयोग कर रहा हूँ और ओ पी के रूप में ही त्रुटि हो रही थी सकता है मिल गया है। मैं हमेशा Microsoft.Owin.Host.SystemWeb का संदर्भ था।

अंततः मैं अपने App_Start कोड में इन पंक्तियों की अनदेखी:

config.SupressDefaultHostAuthentication(); 
config.Filters.Add(new HostAuthenticationFilter("")); 

बाद मैं दोनों लाइनों के रूप में-इरादा यह काम कर रहा था हटा दिया।

+0

इन लाइनों को हटाने से आपकी परियोजना से प्रमाणीकरण हटा दिया जाता है! –

संबंधित मुद्दे