不在托管服务或开发结构(生产,而不是调试/本地)中运行

LDJ*_*LDJ 20 azure dotnetopenauth asp.net-mvc-4

我刚刚开始使用Windows Azure,并且已经使用Azure模拟器在本地运行了一个小型MVC应用程序.我注册了免费试用版,下载了我的发布配置文件并将其导入VS2012.发布到Azure并获得一些程序集引用错误.我通过将它们设置为复制local = true来解决这个问题,现在我得到:

    Not running in a hosted service or the Development Fabric. 
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: Not running in a hosted service or the Development Fabric.

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: Not running in a hosted service or the Development Fabric.]
   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.GetDefaultStartupInfoForCurrentRoleInstance() +447
   Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener..ctor() +40

[ConfigurationErrorsException: Could not create Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.]
   System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData) +6792949
   System.Diagnostics.TypedElement.BaseGetRuntimeObject() +45
   System.Diagnostics.ListenerElement.GetRuntimeObject() +83
   System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() +143
   System.Diagnostics.TraceInternal.get_Listeners() +181
   System.Diagnostics.TraceInternal.TraceEvent(TraceEventType eventType, Int32 id, String format, Object[] args) +155
   DotNetOpenAuth.Loggers.TraceLogger.Info(Object message) +26
   DotNetOpenAuth.Logger.CreateWithBanner(String name) +45
   DotNetOpenAuth.Logger..cctor() +14

[TypeInitializationException: The type initializer for 'DotNetOpenAuth.Logger' threw an exception.]
   DotNetOpenAuth.Logger.get_Library() +14
   DotNetOpenAuth.Reporting.Initialize() +410
   DotNetOpenAuth.Reporting.set_Enabled(Boolean value) +31
   DotNetOpenAuth.Reporting..cctor() +285

[TypeInitializationException: The type initializer for 'DotNetOpenAuth.Reporting' threw an exception.]
   Microsoft.Web.WebPages.OAuth.PreApplicationStartCode.Start() +41

[InvalidOperationException: The pre-application start initialization method Start on type Microsoft.Web.WebPages.OAuth.PreApplicationStartCode threw an exception with the following error message: The type initializer for 'DotNetOpenAuth.Reporting' threw an exception..]
   System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +550
   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +90
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +135
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): The pre-application start initialization method Start on type Microsoft.Web.WebPages.OAuth.PreApplicationStartCode threw an exception with the following error message: The type initializer for 'DotNetOpenAuth.Reporting' threw an exception..]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873912
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254



--------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

如果您在本地测试并将Web项目设置为启动项目而不是云项目,如果看到此错误,但正如我所说,这对于模拟器在本地工作正常,但是部署到Azure会导致失败.

我在这里缺少什么想法?

谢谢

Sli*_*SFT 55

尝试删除您的Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener跟踪侦听器配置web.config.看到这个相关的SO帖子.DotNetOpenAuth.Logger似乎与WAD(windows azure diagnostics)发生冲突.

从删除跟踪侦听web.config:

<trace> 
    <listeners> 
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics"> 
            <filter type="" /> 
        </add> 
    </listeners> 
</trace>
Run Code Online (Sandbox Code Playgroud)

  • 是的,也有这个问题,这就是诀窍.谢谢. (3认同)
  • 只关注那些遵循这个答案的人 - >这会产生为整个项目禁用Azure诊断跟踪侦听器的副作用(这可能不是您正在寻找的解决方案). (2认同)

小智 19

将Windows Azure角色项目设置为"启动"项目.这解决了我的问题.当我在与启动项目相同的解决方案中设置另一个webapp时遇到了同样的问题.