2015-10-28 8 views
5

के लिए ऑब्जेक्टडिस्प्लेड एक्सेप्शन फेंकता है मुझे ASP.NET WebApi2 सेटिंग में ओविन के साथ कुछ कठिनाइयों का सामना करना पड़ रहा है। अपवाद में परिणाम पुनरारंभ करने के बाद पहला अनुरोध: OWIN के साथ वेब एपीआई HttpMessageInvoker

 
    [ObjectDisposedException: Cannot access a disposed object. 
    Object name: 'System.Net.Http.HttpMessageInvoker'.] 
     System.Net.Http.HttpMessageInvoker.CheckDisposed() +327456 
     System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) +24 
     System.Web.Http.Owin.<InvokeCore>d__0.MoveNext() +501 
     System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 
     System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 
     Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<RunApp>d__5.MoveNext() +187 
     System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +99 
     System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +58 
     Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.<DoFinalWork>d__2.MoveNext() +185 
     Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.StageAsyncResult.End(IAsyncResult ar) +69 
     Microsoft.Owin.Host.SystemWeb.IntegratedPipeline.IntegratedPipelineContext.EndFinalWork(IAsyncResult ar) +64 
     System.Web.AsyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +483 
     System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +157 
मेरा मानना ​​है कि पहली बार ईएफ डीबीकॉन्टेक्स्ट को मारने पर समस्या लंबे समय तक चलने वाली कार्य के कारण होती है। सभी पहले अनुरोध में लगभग 4-6000ms है। इस पहले अनुरोध के बाद कोई अपवाद नहीं है।

मैं एक WebAPI परियोजना और निम्नलिखित Owin स्टार्टअप (और कोई Global.asax) के साथ एक सरलीकृत रूप में इस मुद्दे को पुन: किया है:

[Route("api/test/number")] 
public class TestController : ApiController 
{ 
    public object Get() { 
     return 42; 
    } 
} 

जब:

public class Startup 
{ 
    public void Configuration(IAppBuilder app) { 
     var config = new HttpConfiguration(); 
     config.MapHttpAttributeRoutes(); 

     // ---- simulate long running initialization code ------- 
     Thread.Sleep(3000); 
     // ------------------------------------------------------ 

     app.UseWebApi(config); 
    } 
} 

मैं एक नियंत्रक जोड़ने मैं अपवाद में पहले अनुरोध परिणामों का अनुरोध करता हूं।

+0

मेरे पास यह वही समस्या है। शायद अगर किसी के पास कोई प्रतिक्रिया नहीं है, तो उसे एएसपीनेट टीम को सूचित किया जाना चाहिए? –

+0

मुझे अभी भी एक ही अपवाद मिला है। मुझे लगता है कि यह एक बग है। – tia

उत्तर

4

यह एक पुरानी सवाल है, लेकिन एक बस में घंटों खर्च ObjectDisposedException हरा करने की कोशिश कर और सिर्फ एक समाधान है जो इस link मेरे साथ मदद की मिली:

जब आपके Owin वेब एपीआई स्वयं की मेजबानी के वातावरण में चलाना चाहिए यदि आपके पास बाध्य Owin स्टार्टअप वर्ग

public void Configuration(IAppBuilder app) 
{ 
    ConfigureOAuth(app); 

    HttpConfiguration config = new HttpConfiguration(); 
    WebApiConfig.Register(config); 
    app.UseWebApi(config); 
} 

आप तो अपने Owin वेब एपीआई के लिए मेजबान के रूप में आईआईएस का उपयोग वैश्विक asax कक्षा में वेब एपीआई config बाध्य करने के लिए करना चाहते हैं में वेब एपीआई config

protected void Application_Start(object sender, EventArgs e) 
{ 
    GlobalConfiguration.Configure(WebApiConfig.Register); 
} 

इसने ऑब्जेक्ट डिस्प्ले अपवाद को समाप्त कर दिया और मेरा वेब एपीआई एक आकर्षण की तरह चलता है

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