0

WebDeploy を使用してライブ サーバーに既にデプロイされている ASP.NET Web アプリケーションがある場合、そのアプリケーションのサブセットを別のサーバーにデプロイするにはどうすればよいですか?

例えば

  • webapp 全体 / 静的ファイルを含むすべてのファイル -> domain.com への web デプロイ
  • 静的ファイルのみ (js、images、css) -> static.com への Web デプロイ

これは、静的コンテンツ専用の別の Cookie レス サイトを作成するためのものです。

1 つの発行プロファイルだけで可能ですか? または、2 つの発行プロファイルを作成する必要がありますか?

また、webapp の静的部分 ( ~/Content ディレクトリ内のすべて) のみをデプロイする発行プロファイルを作成することもできますか?

両方のターゲット サーバーは、Windows 2008 64 ビットで実行されている II7.5 です。

4

1 に答える 1

1

これは、2 つの発行プロファイルで行うことができます。各プロファイルの適切なコンテンツをスキップする必要があります ( Visual Studio 内から展開を実行する場合は注意が必要です)。

ただし、アプリケーション サーバーに完全にデプロイしてから、runCommandプロバイダーを使用してバッチ ファイルを実行することをお勧めします。

これを行うには、発行プロファイルで次を定義できます。

<ItemGroup>
    <AfterAddIisSettingAndFileContentsToSourceManifest>
        $(AfterAddIisSettingAndFileContentsToSourceManifest);
        AddContentDeploymentToSourceManifest;
    </AfterAddIisSettingAndFileContentsToSourceManifest>
</ItemGroup>

<Target Name="AddContentDeploymentToSourceManifest">
    <ItemGroup>
        <MsDeploySourceManifest Include="runCommand">
            <Path>$(MSBuildProjectDirectory)\deployContent.bat</Path>
        </MsDeploySourceManifest>
    </ItemGroup>
</Target>

次に、deployContent.bat で:

REM Detect MSDeploy location (stolen from VS generated CMD)
if "%MSDeployPath%" == "" (
for /F "usebackq tokens=1,2,*" %%h  in (`reg query "HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy" /s  ^| findstr -i "InstallPath"`) do (
if /I "%%h" == "InstallPath" ( 
if /I "%%i" == "REG_SZ" ( 
if not "%%j" == "" ( 
if "%%~dpj" == "%%j" ( 
set MSDeployPath=%%j
))))))

"%MSDeployPath%mdeploy.exe" -verb:sync ^
    -source:iisApp="application site name" 
    -dest:iisApp="static content site name",computerName=http://contentserver:8192/msdeploy.axd
    -skip:File=^.*(?<!png|jpg|jpeg|css|js)$

... アプリケーション サーバーからコンテンツ サーバーにサイトを展開し、事前定義された静的コンテンツ拡張リストのいずれも持たないものはすべてスキップします。

(FYI:サーバー上に既に存在しない限り、バッチ ファイルに引数を送信しようとしないでください)

于 2012-10-05T06:53:05.643 に答える