Wcf Microsoft Azure实例部署中的RoleEnvironmentException

Wcf Microsoft Azure实例部署中的RoleEnvironmentException,wcf,azure,Wcf,Azure,我正在玩一个有WCF服务和Azure的游戏 我有几个WCF服务在Azure上成功运行,这个特定的服务一直正常运行,直到我决定将其重新部署到另一个(现有)云服务下 我将其从我的VS解决方案中的云服务X角色下删除,并将其添加到另一个云服务角色中。我发布了,当我发布时,我收到异常错误 “未处理的异常:Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironmentException”。有人告诉我,这项服务是不断循环使用的 此消息显示在Azure管理门户中此WC

我正在玩一个有WCF服务和Azure的游戏

我有几个WCF服务在Azure上成功运行,这个特定的服务一直正常运行,直到我决定将其重新部署到另一个(现有)云服务下

我将其从我的VS解决方案中的云服务X角色下删除,并将其添加到另一个云服务角色中。我发布了,当我发布时,我收到异常错误 “未处理的异常:Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironmentException”。有人告诉我,这项服务是不断循环使用的

此消息显示在Azure管理门户中此WCF服务所在的实例下。我已经在它自己的云服务上和一个有很多实例的服务下尝试过了

回顾了关于这个问题的少量文章()和()

通过远程处理实例,我在事件查看器中拥有以下功能:

Application: WaIISHost.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironmentException
Stack:
   at Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.<InitializeRole>b__0()
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.ThreadHelper.ThreadStart()
但这是AzureLocalStorageTraceListener中自动生成的代码

我怎样才能弄清这个问题的真相

Web.Config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <!--  To collect diagnostic traces, uncomment the section below or merge with existing system.diagnostics section.
        To persist the traces to storage, update the DiagnosticsConnectionString setting with your storage credentials.
        To avoid performance degradation, remember to disable tracing on production deployments.
  <system.diagnostics>     
    <sharedListeners>
      <add name="AzureLocalStorage" type="WCFServiceDataTransfer.AzureLocalStorageTraceListener, WCFServiceDataTransfer"/>
    </sharedListeners>
    <sources>
      <source name="System.ServiceModel" switchValue="Verbose, ActivityTracing">
        <listeners>
          <add name="AzureLocalStorage"/>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
        <listeners>
          <add name="AzureLocalStorage"/>
        </listeners>
      </source>
    </sources> 
   </system.diagnostics> -->
  <system.diagnostics>
    <trace>
      <listeners>
        <add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">        
        </add>
      </listeners>
    </trace>
  </system.diagnostics>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <client />
    <services>
      <service behaviorConfiguration="TransferServiceBehavior" name="WCFServiceDataTransfer.TransferService">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="TransferService" contract="WCFServiceDataTransfer.ITransferService">
        </endpoint>
      </service>

    </services>
    <bindings>
      <basicHttpBinding>
        <binding name="TransferService" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647"
          transferMode="Streamed">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
            maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None" />
        </binding>
      </basicHttpBinding>
    </bindings>

        <behaviors>
      <serviceBehaviors>
        <behavior name="TransferServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500" />

        </behavior>
        <behavior>                   
          <!-- To avoid disclosing metadata information, set the value below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    <!--
        To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.
    -->
    <directoryBrowse enabled="true" />
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.Data.Services.Client" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
    <httpRuntime maxRequestLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="14400"   />   
  </runtime>
</configuration>
好的,是什么解决了这个问题。 我将以下内容添加到导入结束标记下的ServiceDefinition.csdef文件中。它根本不存在,一旦我添加了下面的内容并发布,实例就可以启动了

使用1.8版

<LocalResources>
   <LocalStorage name="WCFServiceDataTransfer.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
</LocalResources>


有一天帮助别人。

只是好奇-您是指将
元素更改为更大的
大小的inmb
值吗?如果是这样的话,你应该编辑你的答案,明确地说出来,这样它有一天真的会帮助别人。另外,只是想知道您使用的是哪个版本的工具。上周我创建了一个项目(v1.8版),我的
sizeInMB
值是20000。这是您的默认值吗?你把自己的价值改成了什么?
public class WebRole : RoleEntryPoint
    {
        public override bool OnStart()
        {
            // To enable the AzureLocalStorageTraceListner, uncomment relevent section in the web.config  
            DiagnosticMonitorConfiguration diagnosticConfig = DiagnosticMonitor.GetDefaultInitialConfiguration();
            diagnosticConfig.Directories.ScheduledTransferPeriod = TimeSpan.FromMinutes(1);
            diagnosticConfig.Directories.DataSources.Add(AzureLocalStorageTraceListener.GetLogDirectory());

            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            return base.OnStart();
        }
    }
<LocalResources>
   <LocalStorage name="WCFServiceDataTransfer.svclog" sizeInMB="1000" cleanOnRoleRecycle="false" />
</LocalResources>