1

アプリケーションを実行するたびにMSAzureエミュレーターを起動するという問題に直面しています。私がフォローしているプロセスが正しくない可能性があります。1)コードを編集します2)Visual StudioでF5キーを押してプロジェクトを実行します(Azureプロジェクトはスタートアッププロジェクトです)3)VSはMs Azureエミュレーターを起動します4)最後にアプリケーションはローカルホスト(VS組み込みWebサーバー内)で実行されます127.0.0.1:82のようなURL

オーバーヘッドは、変更を加えるたびに、上記の4つの手順を実行することです。それはかなりの開発時間を殺します。

私の質問:1)コードを編集する2)ブラウザでアプリケーションをビルドして起動する3)デバッグのためにプロセスw3wpに接続するなど、IISを使用して直接実行する方法はありますか?

私は紺碧のプロジェクトの新人です。あなたの助けをいただければ幸いです。

私のServiceDefinition.csdef:

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="ABC" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="ABCWebRole">
    <Sites>
      <!--<Site name="External" physicalDirectory="..\External">
        <Bindings>
          <Binding name="Http" endpointName="HttpIn" />
        </Bindings>
      </Site>-->
      <Site name="ABCWebRole" physicalDirectory="..\ABCWebRole">
        <Bindings>
          <Binding name="Http" endpointName="HttpIn" />
          <!--<Binding name="HttpsIn" endpointName="HttpsIn" hostHeader="app.ABC.com" />-->
        </Bindings>
      </Site>
    </Sites>
    <ConfigurationSettings>
      <Setting name="StorageConnectionString" />
      <Setting name="SmtpServer" />
      <Setting name="SmtpPort" />
      <Setting name="SmtpUsername" />
      <Setting name="SmtpPassword" />
      <Setting name="myDSUserName" />
      <Setting name="myDSPassword" />
      <Setting name="myDSIntegratorKey" />
      <Setting name="APIUrl" />
      <Setting name="AccountManagementUrl" />
      <Setting name="myDSEmail" />
      <Setting name="myDSAccountId" />
      <Setting name="DSmemberPassword" />
      <Setting name="QueueNamespace" />
      <Setting name="QueueIssuer" />
      <Setting name="QueueIssuerKey" />
      <Setting name="ShowingFeedbackQueueName" />
      <Setting name="ServiceReportQueueName" />
    </ConfigurationSettings>
    <LocalResources>
      <LocalStorage name="ABCLocal" cleanOnRoleRecycle="true" sizeInMB="1024" />
      <LocalStorage name="DiagnosticStore" cleanOnRoleRecycle="true" sizeInMB="7000" />
      <LocalStorage name="CustomLogging" cleanOnRoleRecycle="true" sizeInMB="1024" />
    </LocalResources>
    <Certificates>
      <Certificate name="app.ABC.com" storeLocation="LocalMachine" storeName="My" />
    </Certificates>
    <Endpoints>
      <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="app.ABC.com" />
      <InputEndpoint name="HttpIn" protocol="http" port="80" />
    </Endpoints>
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
  </WebRole>
  <WorkerRole name="ABCWorkerRole" vmsize="ExtraSmall">
    <!--Remove diagnostics permissions fix...  Remember to remove the associated files<Startup>
      <Task commandLine="FixDiag.cmd" executionContext="elevated" taskType="background" />
    </Startup>
    -->
    <Imports>
      <Import moduleName="Diagnostics" />
    </Imports>
    <ConfigurationSettings>
      <Setting name="StorageConnectionString" />
      <Setting name="SmtpServer" />
      <Setting name="SmtpPort" />
      <Setting name="SmtpUsername" />
      <Setting name="SmtpPassword" />
      <Setting name="QueueNamespace" />
      <Setting name="QueueIssuer" />
      <Setting name="QueueIssuerKey" />
      <Setting name="ShowingFeedbackQueueName" />
      <Setting name="ServiceReportQueueName" />
    </ConfigurationSettings>
    <LocalResources>
      <LocalStorage name="DiagnosticStore" cleanOnRoleRecycle="true" sizeInMB="7000" />
      <LocalStorage name="CustomLogging" cleanOnRoleRecycle="true" sizeInMB="1024" />
    </LocalResources>
  </WorkerRole>
</ServiceDefinition>
4

1 に答える 1

2

私は通常、サービスを Azure または IIS で実行できるように構成します。最初にセットアップするのに少し時間がかかり、後で Visual Studio からどのプロジェクトを実行するかが問題になるため、.ccproj をスタートアップ プロジェクトとして設定すると、F5 キーを押すと Azure で実行されます。それ以外の場合は、.csproj をスタートアップ プロジェクトとして設定すると、Web アプリの構成方法に基づいて、cassini、IIS Express、またはローカル IIS で実行できます。一度だけ変更を加える必要があるのは、Azure Diagnostics リスナーにフックするロジックを web.config から Global.asax->Application_Start() または WebRole.cs->Onstart() メソッドに移動することです。サービスは RoleEnvironment オブジェクトを介して Azure 環境の内部または外部で実行されており、コードは次のようになります。

if (RoleEnvironment.IsAvailable)
{
      Trace.Listeners.Add(new DiagnosticMonitorTraceListener 
                          {
                             Name = "AzureDiagnostics",
                             Filter = new EventTypeFilter(SourceLevels.All) 
                          });
}
else
{
...hook it to a listener that writes logs to an xml file or something
}

Azure 環境の外で実行すると、RoleEnvironment オブジェクトを介して .cscfg 値を読み取る機能など、Azure 固有の機能が失われることに注意してください (ただし、web.config には両方から引き続きアクセスできます)。また、別のタイプの構成を使用してワーカー ロールを手動で実行する必要もあります (単純ではありません)。

于 2012-11-15T00:50:34.170 に答える