CMSが正常に動作するためには、wwwルートの下の仮想ディレクトリに展開して管理するWebサイトにアクセスできるようにする必要があります(注:CMS = N2CMS )。 Visual Studio 'Publish To Web'を使用している場合は、すべて問題ありません。しかし、msbuildコマンドラインでパッケージを生成し、そのバージョンを公開すると、仮想ディレクトリは仮想アプリケーションに変換されます。MsDeploy仮想ディレクトリが展開時に仮想アプリケーションに変換される
IIS Webアプリケーション( 'exampleapp')の下に仮想ディレクトリ '/ n2'を設定し、パッケージ/公開Web設定(IIS Webサイト/アプリケーション名移行先サーバー)をVisual Studioのプロジェクト内に作成します。
展開パッケージを生成するには:
msbuild.exe myproject.csproj /T:Package
これは(標準のMSBuild /場合msdeployターゲット)を実行する場合msdeployコマンドラインバッチファイルと一緒に私のコードのzip形式のパッケージを生成します。
生成SetParameters.xmlには、次のものが含まれています
<?xml version="1.0" encoding="utf-8"?>
<parameters>
<setParameter name="IIS Web Application Name" value="exampleapp/n2" />
</parameters>
生成SourceManifest.xmlは、以下の
<?xml version="1.0" encoding="utf-8"?>
<sitemanifest>
<IisApp path="C:\...shortened-path...\PackageTmp" managedRuntimeVersion="v4.0" />
<setAcl path="C:\...shortened-path...\PackageTmp" setAclResourceType="Directory" />
<setAcl path="C:\...shortened-path...\PackageTmp" setAclUser="anonymousAuthenticationUser" setAclResourceType="Directory" />
</sitemanifest>
誰が仮想ディレクトリがに変換される理由の手掛かりを持って含まれています仮想アプリケーションですか? Microsoft.Web.Publishing.targetsファイルで
うーん、動作するようですが、今場合msdeployは、指定されたデプロイdirはどこかに存在する仮想ディレクトリが実際にあることを「取得」しません。 ( エラー: 'setAcl'プロバイダが物理パスで使用される場合、 'setAclUser'設定の値を指定する必要があります。 )。 –
私はまた< IncludeSetAclProviderOnDestination条件=「『$(IncludeSetAclProviderOnDestination』)== 『』」ターゲットファイル内>真</IncludeSetAclProviderOnDestination >を参照してくださいので、私はあなたがそれをオフに切り替えることができ推測しています。 – tdykstra
私の.csprojでIncludeSetAclProviderOnDestinationをfalseに設定すると、エラーはなくなります。しかし、このエラーは、既定でDeployAsIisAppをFalseに設定すると、SetParameters.xmlの "IIS Web Application Name"に(ローカルの)ファイルパス(サーバー上に存在しない)が付いていることに起因すると考えられます。これをサーバーパスに修正すると、問題が解決します(IncludeSetAclProviderOnDestination = False)。 –