执行AppStart时无法创建存储范围怎么办?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (5)
  • 关注 (0)
  • 查看 (159)

使用ASP.NET MVC 3.0与VisualStudio 2010(前SP1和SP1)和ASP.NET开发服务器我得到了错误“Storage scopes cannot be created when _AppStart is executing“。每次我调试,当我等待几秒钟并刷新浏览器时,它会像预期的那样工作。

  • 每个人都会发生这种事吗?
  • 有什么办法可以防止吗?
  • 在生产过程中,我应该关心这个问题吗?(IIS 6/7托管)

相关CodePlex工作项目#7828没有官方回应。

全堆栈跟踪:

Server Error in '/' Application.
--------------------------------------------------------------------------------
Storage scopes cannot be created when _AppStart is executing. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.InvalidOperationException: Storage scopes cannot be created when _AppStart is executing.

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 
[InvalidOperationException: Storage scopes cannot be created when _AppStart is executing.]
   System.Web.WebPages.Scope.AspNetRequestScopeStorageProvider.set_CurrentScope(IDictionary`2 value) +83361
   System.Web.WebPages.Scope.ScopeStorage.CreateTransientScope(IDictionary`2 context) +95
   System.Web.WebPages.Scope.ScopeStorage.CreateTransientScope() +76
   System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) +84
   System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) +10
   System.Web.Mvc.<>c__DisplayClassb.<BeginProcessRequest>b__5() +37
   System.Web.Mvc.Async.<>c__DisplayClass1.<MakeVoidDelegate>b__0() +21
   System.Web.Mvc.Async.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) +12
   System.Web.Mvc.Async.WrappedAsyncResult`1.End() +62
   System.Web.Mvc.<>c__DisplayClasse.<EndProcessRequest>b__d() +50
   System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) +7
   System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) +22
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +60
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +8862381
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +184
提问于
用户回答回答于

WebPageHttpModule(在System.Web.WebPages里)被认为是完全设置的AppStartExecuteCompleted,但它没有,这就是为什么您会得到一个异常(所有这些猜测工作都基于此)。

一些修复,我想(再次,这是纯粹的猜测工作,因为我不能再现这个)。

1)尝试在WebConfig中静态注册WebPageHttpModule模块。

2)根据链接到的线程上的注释,这似乎不会发生在IIS上,因此我将尝试在IISExpress下运行(在VS 2010 SP1下)。

用户回答回答于
用户回答回答于

断开数据库。当连接处于活动状态时,不能重新创建它.

用户回答回答于

我的声明:

private static Dictionary<string, string> FormatList = new Dictionary<string, string>();

由于静态变量在整个web应用程序中共享,我认为在App期间触发了dictionary的构造函数App_Start开始执行。因为App_Start可能正在设置所有会话和应用程序存储。

扫码关注云+社区

领取腾讯云代金券