0

AzureWebロールで実行するように設定された非常に単純なWCFサービスがあります。(予想どおり)正しく機能していませんが、正常にデバッグするには、トレース診断を収集する必要があります。誰かが私がどこで間違っているのか特定できますか?

Webロールのweb.configは次のとおりです。

<?xml version="1.0"?>
<configuration>
  <configSections>
  </configSections>
  <!--  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>
    <sources>
      <source propagateActivity="true" name="System.ServiceModel" switchValue="Verbose,ActivityTracing">
        <listeners>
          <add name="AzureLocalStorage">
            <filter type="" />
          </add>
        </listeners>
      </source>
      <source name="System.ServiceModel.MessageLogging" switchValue="Verbose">
        <listeners>
          <add name="AzureLocalStorage">
            <filter type="" />
          </add>
        </listeners>
      </source>
    </sources>
    <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>
    <sharedListeners>
        <add name="AzureLocalStorage" type="MyApp.Svc.AzureLocalStorageTraceListener, MyApp.Svc" />
    </sharedListeners>
  </system.diagnostics>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
    <customErrors mode="Off" />
  </system.web>
  <system.serviceModel>
    <diagnostics>
      <messageLogging logMessagesAtServiceLevel="true" logMessagesAtTransportLevel="true" />
      <endToEndTracing activityTracing="true" messageFlowTracing="true" />
    </diagnostics>
    <services>
      <service name="MyApp.Svc.Tracker">
        <endpoint address="" behaviorConfiguration="restJsonBehavior"
          binding="webHttpBinding" bindingConfiguration="" name="restEndpoint"
          contract="Cogent.TimeTracker.Azure.Svc.ITracker" />
      </service>
    </services>
    <behaviors>
      <endpointBehaviors>
        <behavior name="restJsonBehavior">
          <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json" />
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
    <rewrite>
        <rules>
            <rule name="TrackerService" stopProcessing="true">
                <match url="^tracker/(.*)$"/>
                <action type="Rewrite" url="Tracker.svc/{R:1}"/>
            </rule>
        </rules>
    </rewrite>
  </system.webServer>
</configuration>

「これで何も悪いところが見つからない!」と思いながら、これを見つめ続けています。これが私のServiceDefinition.csdefです:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MyApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="MyApp.Svc" vmsize="Small">
    <Sites>
      <Site name="Web">
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
      <Import moduleName="Connect" />
    </Imports>
    <LocalResources>
      <LocalStorage name="MyApp.Svc.svclog" sizeInMB="1000" cleanOnRoleRecycle="true" />
    </LocalResources>
    <Startup>
      <Task commandLine="installStuff.cmd" executionContext="elevated">
        <Environment>
          <Variable name="EMULATED">
            <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" />
          </Variable>
        </Environment>
      </Task>
    </Startup>
  </WebRole>
</ServiceDefinition>

そして最後に、私のServiceConfiguration.Cloud.cscfg:

<?xml version="1.0" encoding="utf-8"?>
<ServiceConfiguration serviceName="MyApp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="1" osVersion="*">
  <Role name="MyApp.Svc">
    <Instances count="1" />
    <ConfigurationSettings>
      <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="DefaultEndpointsProtocol=https;AccountName=myaccountname;AccountKey=myaccountkey" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.ActivationToken" value="myactivationtoken" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.Refresh" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.WaitForConnectivity" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.Upgrade" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.EnableDomainJoin" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainFQDN" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainControllerFQDN" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainAccountName" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainPassword" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainOU" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.Administrators" value="" />
      <Setting name="Microsoft.WindowsAzure.Plugins.Connect.DomainSiteName" value="" />
    </ConfigurationSettings>
  </Role>
</ServiceConfiguration>

更新:そして私のWebRole.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.Diagnostics;
using Microsoft.WindowsAzure.ServiceRuntime;
using System.Diagnostics;

namespace MyApp.Svc
{
    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());
            DiagnosticMonitor.Start("Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString", diagnosticConfig);
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            Trace.WriteLine("MyApp.Svc started", "Information");
            return base.OnStart();
        }
    }
}
4

2 に答える 2

1

構成に大きな問題は見当たらないようです。ただし、正しいタイプを使用していることを確認してください。

type = "MyApp.Svc.AzureLocalStorageTraceListener、MyApp.Svc"

正しいか確認してください。実際には、タイプを削除することもできます。http://blogs.msdn.com/b/myazureworld/archive/2011/07/20/wcf-tracing-in-windows-azure-sdk-1-3-or-higherを確認することをお勧めします。サンプルのaspx 。

それでも問題が解決しない場合は、リモートデスクトップを使用してサーバーに接続し、ローカルストレージにトレースがあるかどうかを確認してください。

よろしくお願いします、

明徐。

于 2012-05-16T10:20:03.327 に答える
0

実際、この構成はうまく機能していたことが判明したと思います。DiagnosticMonitor が BLOB に書き出すのに十分な忍耐力がなかっただけです。

于 2012-05-21T02:36:05.797 に答える