web-dev-qa-db-ja.com

コンパイルエラーCS0016:出力ファイルに書き込めませんでした

簡単に言えば

Webサイトを閲覧しようとすると、次のエラーメッセージが表示されます。

CS0016:出力ファイル 'c:\ Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\www\xxx\yyy\zzz\a.b.dll'に書き込めませんでした-'ディレクトリ名が無効です'

詳細

開発PCに2つのWebサイト(架空の名前)があります。

  • Web2-これは.NET 3.5を使用してASP.NETで記述され、v2.0 .NETフレームワークに対応するAppPoolで実行され、統合モードで実行されます。これはVisual Studio 2010を使用して開発されています
  • Web4-これは.NET 4.5を使用してASP.NETで記述され、v4.0 .NETフレームワークに対応するAppPoolで実行され、統合モードで実行されます。これはVisual Studio 2012を使用して開発されています。

最近、Web2012でVS2012をほぼ常に使用していて、問題なく動作していますが、先日、Web2を実行しようとしたところ、上記の例外が表示されました。

奇妙なことに、パスの一部(上記で文字 "zzz"に置き換えたもの)は "\ de-DE \"であるため、ドイツ語のパスを指しているように見えます-私はドイツ語で動作していないため、わかりませんどこからこのアイデアを得たのか.

ほとんど間違いなく無関係ですが、不明な理由のため、言及することが重要だと思います:この問題が最初に発生する前日にVisual Studio 2012でパフォーマンス分析ツールを使用していたので、これが発生するかどうかはわかりません私のコンピュータにいくつかの変更を加えました... ??

試行された修正

これに関してインターネット上にはかなりの数のスレッドがあります。一部のスレッドが成功し、ファイルアクセス許可が変更され、他のスレッドはやや絶望的なサウンドノートで終了します...私は、自分のPCのすべての関連するサウンドディレクトリのNTFSアクセス許可を、同僚のそれと比較するプロセスを実行しましたこれはまだ機能しています。残念ながら、そこにいる喜びはありません。

また、asp.net 2.0をアンインストールし、次を使用して再インストールしました。

C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -u
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\aspnet_regiis.exe -ir

そして再び、そこにいる喜びもありませんでした。

私のWeb4は影響を受けずに動作し続けます。

また参考までに、IIS 7.5 on Win7 x64を使用)。

私は今、このより広い聴衆に目を向けて、私の絶望の状態を成功の1つに変えたいと思っています。

みんな、ありがとう

グリフ

17
DrGriff

答えはProcMonを使用して見つかりました:

http://technet.Microsoft.com/en-us/sysinternals/bb896645

一時asp.netファイルは、最初にユーザーの一時フォルダーに作成され、次にこのフォルダーに移動されます。まだ不明な理由がいくつかありますが、私のWeb2サイト(.NET 2 AppPool)のコンパイルでは、私のWeb4(.NET 4 AppPool)サイトと同じフォルダーを使用しています。

ProcMonを使用して "アクセス拒否"のすべての結果を特定し、IIS_IUSRSグループに書き込みアクセス許可を与えました(あるケースでは-C:\ Users\ASP.NET V4.0 Integrated-変更アクセス許可)。

コンパイルで「間違った」フォルダが使用されている理由がわかりません。場合によっては、権限が過剰に昇格されたのではないかと思いますが、現時点では機能しています。

9
DrGriff

IIS Managerのアプリケーションプールの詳細設定で、[プロセスモデル]> [ユーザープロファイルの読み込み]が[True]に設定されていることを確認します。

私はこれとまったく同じ問題を抱えていました。アクセス許可の変更、ウイルス対策の無効化、新しいアプリプールの作成、.NETの再インストールを試みました。 "Default.aspx"ページだけで新しいサイトを作成し、そのサイトを表示しようとしました。そのサイトでさえコンパイルエラーがありました。最後に、アプリプール(クリーンテストサイトとメインサイト)の[ユーザープロファイルの読み込み]設定のデフォルト値が「False」ではないことに気付きました。私はそれをtrueに戻し、問題はなくなりました。

43
webthaumaturge

上記の回答で問題が解決しない場合は、環境変数を確認してください([コンピューター]-> [プロパティ]-> [システムの詳細設定]-> [詳細設定]タブ-> [環境変数]を右クリック)。

一時変数が、必要なすべての権限を持つフォルダーを指していることを確認してください。 (ネットワークサービスのフルアクセス、IIS_IUSRS)

注:上部にある2つの変数だけをチェックするのではなく、システム変数の下のスクロールメニューを確認してください。そこで設定された変数も見つかるかもしれません。

4
JohnSmith

それは原因ではないかもしれませんが、VS 2010パフォーマンスを実行しようとした後にこのエラーが発生し始めましたWizard Instrumentationメソッドで。

私のDEV環境での迅速な修正:アプリのアプリケーションプールのIDをLocalSystemに変更しました。

4
Tom Andraszek