401-サーバー2008 R2 IIS 7.5で無許可


20

Server 2008 IIS 7.5ボックスにWebアプリケーションを展開しています。

リモートからこのエラーが発生します:401 - Unauthorized: Access is denied due to invalid credentials。(リモート=同じLAN上のデスクトップ)

異なるブラウザを使用して複数のリモートクライアントを試しましたが、すべて同じ結果になりました。(IE、FF、およびChrome)

サーバー自体のデスクトップからアプリケーションを押すと、問題なく動作します。ただし、サーバーデスクトップでFirebugを試したことはありません。私はまだ401ステータスコードを発行しているにもかかわらず、コンテンツを返していると思います。アップデート#2を参照してください。

アプリケーションは匿名認証を使用しています。

アプリケーションは、MVCフレームワークを使用して.NET 4.0 Asp.Netで記述されています。

静的コンテンツは正常に機能します。例:http : //server.com/content/image.jpg

Sysinternals procmonは、各リクエストに対して次の2つの結果を返します:FAST IO DISALLOWEDおよびPATH NOT FOUND。

同じサーバー上で他の2つのMVCアプリが正常に動作しています。フォルダのセキュリティを確認しましたが、すべて一致しています。

Server 2008 IIS 7.0ボックスでアプリが正常に動作します。

これに関連するサーバーのイベントログには何も表示されません。

ここで髪を引っ張って、トラブルシューティングのヒントはありますか?

更新#1:これは、私が掘るときにWTFが増えるだけです。

IISマネージャーの[アプリケーション]-> [エラーページ]-> [機能設定の編集]をクリックするDetailed Errorsと、アプリがリモートで動作します。これをオンのままにしないので、問題はまだ解決されておらず、さらに混乱しています。

更新#2:Firebugを使用すると、ステータスはまだ401 Unauthorizedであることがわかりますが、応答はアプリケーションの正しいHTMLを返しています。

更新#3失敗したリクエストトレースで遊ぶ、401の原因となっている警告リクエストトレースは次のとおりです。

ModuleName ManagedPipelineHandler
Notification 128
HttpStatus 401 
HttpReason Unauthorized 
HttpSubStatus 0 
ErrorCode 0 
ConfigExceptionInfo  
Notification EXECUTE_REQUEST_HANDLER 
ErrorCode The operation completed successfully. (0x0)

更新#4通常のIISログはこれを示しています:

#Software: Microsoft Internet Information Services 7.5
#Version: 1.0
#Date: 2010-07-20 19:17:22
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(User-Agent) sc-status sc-substatus sc-win32-status time-taken
2010-07-20 19:17:22 10.10.1.10 GET /Purchasing/Home - 80 - 10.10.1.12 Mozilla/5.0+(Windows;+U;+Windows+NT+6.1;+en-US;+rv:1.9.2.6)+Gecko/20100625+Firefox/3.6.6 401 0 0 4414

サーバーで失敗した要求トレースを実行して、リモートマシンからアプリケーションにアクセスしようとしましたか。障害がある場合は、原因を確認する必要があります。
ビベッククンバル

@vivek私の最新の更新を参照してください
mxmissile

ARRG !!! でもこれでもう!の検索に2時間無駄になりHtml.RenderAction、Razorの使用に気付いたHtml.Actionため、最初の検索が空になりました。
mxmissile

ああ、それは数年でした、何だと思いますか?今朝、このAGAINで3時間無駄になりました!いつ学ぶ?!?!?!
mxmissile

回答:


19

時には一歩後退しなければならない場合があります...この原因はHtml.RenderAction()[Authorize]属性でマークされたアクションメソッドを呼び出すビューにあったことです。


1
これは私の問題であり、パンダをパンチするのに十分なイライラでした(私はそうしませんでした)。mxmissileに感謝します。
ハリドアブハクメ

4

ローカルでは機能するがリモートでは機能しないため、匿名ユーザーアカウントには何かへのアクセス権はないが、Windowsユーザーにはアクセス権があるように思えます。これを証明するには、WebサイトのWindows認証をオフにし、ローカルで破損するかどうかを確認します。

破損しているものはすべて、アプリプールIDではなくWebサイトIDとして実行されている可能性があります。そうでない場合、ローカルおよびリモートで破損します。サイトからアプリプールへの1対1のマッピングがある場合、または信頼性の高い環境がある場合、アプリプールIDを使用するように匿名ユーザーアカウントを設定することをお勧めします。そうすれば、2人目のユーザーがメンテナンスする必要を心配する必要はありません。

プロセスエクスプローラーについて言及しました。これは実行中の情報を見つけるのに適していますが、アクセス拒否エラーを発見する可能性が高いツールはprocessmonです(sysinternalsからも)。試して、再現してキャプチャし、「拒否」という単語を検索します。ディスク上のアクセス拒否の問題を解決する必要があります。


4

から継承するカスタム認証用のフィルターAuthorizeAttributeOnAuthorizationmethod に対する1つ以上の呼び出しがある場合、これらの1つがAuthorizationContext.Result`HttpUnauthorizedResult 'に設定さ れている場合、これと同じ動作になります。


4

何らかの理由でこれで問題が解決しました。

  1. IISのサイトをクリックします。
  2. ダブルクリック認証
  3. 右クリックして詳細設定を選択します
  4. 「カーネルモード認証を有効にする」の選択を解除します

2

認可ルールの設定を確認しましたか?誰でもこのページにアクセスできる場合(これが目標のようです)、ユーザー列の下に「すべてのユーザー」を持つ「許可」ルールがあることを確認してください。

次に、「認証」で競合がなく、匿名認証のみが有効になっていることを確認します。

お役に立てば幸いです。


1
許可-すべてのユーザー-継承
-mxmissile
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.