我想調用需要從服務器讀取文件的異步方法。只要方法是異步,HttpContext.Current
就會變爲空。如果我通常打電話,它工作正常。我該如何解決這個問題?使用異步時HttpContext.Current爲空
我的代碼是:
System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(path))
我想調用需要從服務器讀取文件的異步方法。只要方法是異步,HttpContext.Current
就會變爲空。如果我通常打電話,它工作正常。我該如何解決這個問題?使用異步時HttpContext.Current爲空
我的代碼是:
System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath(path))
使用HostedEnvironment.MapPath代替:
System.IO.File.ReadAllText(HostedEnvironment.MapPath(path))
Thaks的小費BVS。
正確的類調用是HostingEnvironment.MapPath(path);
這裏 - http://blogs.msdn.com/b/webdev/archive/2012/11/19/all-about-httpruntime-targetframework.aspx - 是一個有關與異步使用HttpContext的文檔/等待。
砍你需要做兩件事情之一長話短說:
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
這可能幫助:HTTP ://www.rahulsingla.com/blog/2010/09/asp-net-httpcontext-current-is-null-in-endxxx-method-of-asynchronous-web-methods-pair – Robert 2011-03-15 20:22:04