2012-03-07 12 views
1

Webアプリケーションを作成しています。私はMSBuild.exeを使ってVSプロジェクトを動的にコンパイルするのが好きです。これは、ローカルマシンを実行するときに効果的です。しかし、私がIISで設定したとき、同じ実装はうまくいきません。私はIISがいくつかのアクセス許可を制限するかもしれないと思う。しかし、明確ではない。ASP.Netで.csprojをプログラムでコンパイルできない

ISコンパイル中に私が得たエラー、

CSC:エラーCS1504:ソースファイル 'C:\ WINDOWS \の一時\のSilverlightのバージョン= v4.0.AssemblyAttributes.cs' の開くことができませんでした( '・アクセス拒否されました。 ')

注:私はSilverlightプロジェクトをコンパイルしています。また、上記のエラーは、コード1

コードは、プロジェクトをコンパイルして終了したプロセスの標準出力、

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = MSBuildPath; 
startInfo.UseShellExecute = false; 
startInfo.CreateNoWindow = true; 
startInfo.WindowStyle = ProcessWindowStyle.Hidden; 
startInfo.RedirectStandardOutput = true; 
startInfo.Arguments = "\"" + file.FullName + "\"" + " /t:Rebuild /p:Configuration=Release"; 
this.process = Process.Start(startInfo); 

このための任意の解決策はありますか?

+0

アプリケーションプールアカウント(おそらくデフォルトのIISユーザーアカウント)にc:\ Windows \ Tempフォルダを読み取る権限がありますか? –

+0

はい私はここで説明したようにhttp://learn.iis.net/page.aspx/624/application-pool-identities/を行いました。 –

答えて

1

"Silverlight、Version = v4.0.AssemblyAttributes.cs"ファイルはTEMPフォルダに作成され、システムアカウント(誤って構成されたユーザーアカウントも含む)はc:\ windows \ tempにTEMPフォルダを持つため、同じファイル名を共有する。これは、1つのアカウントで作成されたファイルが異なるアカウントへのアクセス許可を持たないため、問題です。

次を試してください。
1.ユーザーアカウントを作成し、そのユーザーアカウントにアプリケーションプールIDを構成します。
2. App poolプロパティの "Load user profile"をtrueに設定します。

これにより、アプリケーションプールが独自のTEMPディレクトリを取得し、他のアカウントと状態を共有しなくなります。

関連する問題