私はWindows 7を実行していて、通常はこの設定の開発者ではありません。最近C#でWCF Rest Serviceをビルドしました。これをIISマシン。多くのラングリングの後、アプリケーションをセットアップしましたが、アプリケーションに移動すると、エラーメッセージが表示されます:コンパイルエラー
説明:この要求の処理に必要なリソースのコンパイル中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソースコードを適切に変更してください。
コンパイラエラーメッセージ:CS0016:出力ファイル 'c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\scom_sibyll\8c0b945e\9329016\App_global.asax.eagmqgcd.dll'に書き込めませんでした- 「アクセスが拒否されました。 」
私はできる限りWebを狩り、Temporary ASP.NET Filesフォドラーのアクセス許可を変更して、Network Serviceアカウントに完全な権限を許可し、Tempフォルダーでも同じことを行いました。失敗する前にいくつかのファイルをコピーするので、おそらく書き込み権限があるので、ソースフォルダーから読み取る権限を確認しましたが、これも機能しています。さらに、DLLファイルをキャッシュしようとすると、それがバタバタしていることを指摘し、UACをオフにするだけでなく、アンチウイルス保護もオフにしてみました。これが起こらないようにブロックしています。今はアイデアが新鮮です。誰か提案はありますか?
WCFサービスが実行されているアカウントには、「一時ASP.NETファイル」ディレクトリへの書き込みアクセス権がないようです。
Regiisを再実行することもできます。
%windir%\ Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis -i
私と同じようにここを見る人にとって、受け入れられた回答で問題が解決しない場合は、次の記事を試してみてください: http://lordzoltan.blogspot.com/2011/02/aspnet-2-and-4 -default-application-pool.html
要約すると、アプリプールユーザーが%TMP%/%TEMP%フォルダーにアクセスできない場合にも、同じエラーが表示されることがあります。
アプリプールを実行しているユーザーの一時フォルダーに対する読み取りと変更のアクセスをIIS_IUSRSに許可する必要があります。
これは、アプリプールユーザーのプロファイルの一時フォルダーのいずれかである可能性があります。 c:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp
、またはc:\windows\temp
のシステム一時フォルダ。
これを設定すると、問題が解決しました。
Windows 8/Server 2012では、aspnet_regiisはサポートされなくなりました。 Windowsの機能を使用して再インストールを試みましたが、失敗しました。 IISの再インストールを試みましたが、失敗しました。 WebPIを使用して再インストールを試みましたが、失敗しました。
Windowsの一時ディレクトリにACLを設定することで問題を解決しました。
これが仕事をするPowershellです:
$dir = "C:\Windows\Temp"
$acl = get-acl -path $dir
$new = "IIS_IUSRS","Modify","ContainerInherit,ObjectInherit","None","Allow"
$accessRule = new-object System.Security.AccessControl.FileSystemAccessRule $new
$acl.SetAccessRule($accessRule)
$acl | Set-Acl $dir
3つのステップがあります。
1 - check if "Application Pool Identity" is NetworkService
2 - NETWORK_SERVICE account needs full control on:
. C:\Windows\Temp
. C:\Windows\Microsoft.NET\Framework[related framework]\Temporary ASP.NET Files\
3 - restart the IIS
エラーが解決されました
regiisを再実行することもできます。 "%windir%\ Microsoft.NET\Framework [関連フレームワーク]\aspnet_regiis -i"
このKBで解決しました。一時ファイルのパスがOS環境変数に存在しないようです。
Asp.netコア2.0を使用してWeb APIを開発しているときに同じエラーが発生しましたが、マシンを再起動すると解決しました。
私にとっての解決策は、ここで説明した修正の組み合わせでした。 NETWORK_SERVICEアカウントにフルコントロールを付与する必要がありました
C:\ Windows\Temp
そして
C:\ Windows\Microsoft.NET\Framework [関連するフレームワーク]\Temporary ASP.NET Files \
また、アプリケーションプールIDをNetworkServiceに変更します。
TempフォルダーのNETWORK_SERVICEにフルコントロールを与えた後、IISを再起動することも忘れないでください。
IIS_WPGグループにC:\ Windows\Tempへの読み取りおよび書き込みアクセスを許可しました。これでうまくいきました。私はServer 2003 R2を使用しており、IIS 6で、グループ名が異なります。 http://learn.iis.net/page.aspx/140/ Understanding-built-in-user-and-group-accounts-in-iis / それが言うところ:
•IUSRビルトインアカウントは、IUSR_MachineNameアカウントを置き換えます。
•IIS_IUSRSビルトイングループは、IIS_WPGグループを置き換えます。
Windowsの一時フォルダを提案してくれたDommerに感謝し、Nice Summeryと詳細な説明へのリンクを提供してくれたzcrar70に感謝します。
権限がありますが、エラーが発生し始めています。 「マシンを再起動」は私のために働く
Tempファイルがワークステーション内の他のプロセスによってロックされている場合があります。最初のステップとして、ワークステーションを再起動し、アプリケーションを確認してください。
Windows 8では、何もうまくいきませんでした。ある日、アプリプールは突然、NetworkServiceアカウントでの作業をやめることを決定しました。
アプリプールを自分のユーザーアカウントで動作するように変更して、問題を解決しました。私が知っている素晴らしい解決策ではありませんが、それはうまくいきました。
会社がユーザーから管理者権限を奪うさまざまなセキュリティ対策を実装した後、企業環境でこのエラーが発生し始めました。
開発者の場合、会社は使用可能なアカウントの作成を承認し、これらをPCの管理グループに追加してから、アカウントを使用するようにアプリケーションプールのIDを変更する必要がありました。
例(Windows 10)
開発者用に作成されたアカウント:domain\developer
PCの管理者権限を持つユーザーは、次のことを行う必要があります。
次に、アプリプールを構成します。
この時点で、すべてを閉じ、IISを再起動してからアプリを実行することができました。これにより、以前はできなかった一時フォルダにアクセスできるようになりました。
このエラーは、batファイルを使用して一時ファイルを削除すると発生します。それはおそらくディレクトリ自体を削除し、与えられた許可はなくなります。だから、どういうわけかそれらを復元する必要があります。
最も簡単な方法は、Everyoneに対して以下のディレクトリを完全に制御できるようにすることです。
C:\ Windows\Temp
C:\ Windows\Microsoft.NET\Framework [関連するフレームワーク]\Temporary ASP.NET Files \