2

いくつかの XML ファイルを使用してデータを格納する Web アプリケーションを開発しています。Build Action を Content に設定し、インストール時にファイルが Applications Virtual Directory に正常にコピーされます。

C:\inetpub\wwwroot\ApplicationName\

私が抱えている問題は、(設定などを保存するために) これらの XML ファイルに書き込むと、多くの書き込み権限の問題が発生することです。したがって、これを回避するために、Web 配置プロジェクトで次の PostBuildEvent を使用して、これらのファイルをインストール先の仮想ディレクトリから C ドライブの下の新しいディレクトリにコピーしようとしています。

xcopy "$(TargetDir)*.xml" "C:\CompanyName\ApplicationName\" /y

ただし、これは何もしません。これは、インストーラーの PostBuildEvents が実際にはインストール時に起動されず、インストーラーのビルド時にのみ起動されるためなのか、それとも TargetDir が bin ディレクトリを表しているためなのかはわかりません。

C:\inetpub\wwwroot\ApplicationName\bin\

ルート アプリケーション仮想ディレクトリの代わりに:

C:\inetpub\wwwroot\ApplicationName\

誰にもアイデアはありますか?誰もこの種のことを以前に扱ったことがありますか?私は本当にこれに困惑しています。

更新: すべてのユーザーに完全なアクセス許可を与える PostBuildEvent を含めました。

icacls "$(TargetDir)" /grant Users:F

しかし、問題は解決していないようです。

$(TargetDir) が ..\ApplicationName\ または ..\ApplicationName\bin\ の場合、正確にどこを指しているのかもわかりません。

4

2 に答える 2

0

私がやろうとしていたことを行うためのはるかに簡単な方法があることがわかりました。

PostBuildEvents を使用して新しいディレクトリ構造を作成し、そこにファイルを移動する代わりに、新しいディレクトリ構造を

InstallerProject > View > File System

その後、インストーラー プロジェクトのSomeProjectエントリからコンテンツ ファイルを見つけ、Folderの値を新しく指定したディレクトリ構造に変更しました。この場合は、

C:\CompanyName\ApplicationName\

これは問題なく動作しているようで、当初の意図どおりにこれらのファイルに自由にアクセスできるようになりました。

于 2012-08-10T13:25:10.587 に答える
0

必要なのは、Web アプリケーション プールが実行されているコンテキストのユーザーに完全なアクセス許可を与えることだけです。

このユーザーを見つけるには、IIS マネージャーを起動し、[アプリケーション プールID ] 列を確認します。

何かのようなもの

cacls C:\inetpub\wwwroot\ApplicationName /G Users:F

このサブディレクトリへのすべてのアクセス許可を、コンピューター上のすべてのユーザーに付与しApplicationPoolIndentityます

于 2012-08-09T19:09:19.450 に答える