이것은 나를 괴롭힌다.개체가 너무 일찍 처리됩니까?
class M1 : OwinMiddleware
{
public M1(OwinMiddleware next) : base(next) { }
public override Task Invoke(IOwinContext context)
{
return Task.Run(() =>
{
Thread.Sleep(200); ; // do something
string reqUrl = context.Request.Uri.ToString(); //<- throws exception
})
.ContinueWith(t => this.Next.Invoke(context));
}
}
후 시작 클래스 :이 M1에 경우 ObjectDisposedException을 던져 실행
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use((context, next) =>
{
return Task.Run(() =>
{
}).ContinueWith(t => next());
});
app.Use<M1>();
}
}
:
가 삭제 된 개체에 액세스 할 수 없습니다 나는이 OWIN/카타나 미들웨어 있습니다. 개체 이름 : 'System.Net.HttpListenerRequest'.
스택 추적 : System.Net.HttpListenerRequest.get_UserHostName에서 System.Net.HttpListenerRequest.GetKnownHeader (HttpRequestHeader 헤더)에서 System.Net.HttpListenerRequest.CheckDisposed() (에서
)에서 Microsoft.Owin.HeaderDictionary.TryGetValue (문자열 키에 Microsoft.Owin.Host.HttpListener.RequestProcessing.RequestHeadersDictionary.TryGetValue (문자열 키 문자열 [] & 값) 문자열 [] & 브로 UE) Microsoft.Owin.OwinRequest.get_Host에서 Microsoft.Owin.Infrastructure.OwinHelpers.GetHost (IOwinRequest 요청)에서 Microsoft.Owin.Infrastructure.OwinHelpers.GetHeaderUnmodified (IDictionary
2 headers, String key) at Microsoft.Owin.Infrastructure.OwinHelpers.GetHeader(IDictionary
2 헤더, 문자열 키)에서()
전에 익명의 미들웨어를 제거하면 app.Use(); 예외가 발생하지 않습니다.
내가 잘못 했습니까?
당신은 무엇을하려고합니까? – theMayer
Owin의 일부 논리가 처리 한 후 비동기 적으로'context'에 액세스하는 것처럼 보입니다. 나는 Owin의 어떤 것도 모른다. 그러나 이것은 나에게 매우 복잡한 논리처럼 보인다. – theMayer
방금 학습을 시작했지만 Node/ExpressJS와 매우 비슷합니다. – Evgeni