CustomErrors mode =“ Off”


254

Webアプリケーションをプロバイダーにアップロードするたびにエラーが発生します。customErrorsモードのため、表示されるのはデフォルトの「実行時エラー」メッセージだけであり、customErrorsをオフにしてエラーの詳細を表示するように指示しています。

怒った、私は私のweb.configを次のように設定しました:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <customErrors mode="Off"/>
    </system.web>
</configuration>

それでも、取得できるのは、有用な情報が含まれていない愚かなリモートエラーページだけです。customErrorsをオフにするために他に何ができますか?!


1
追加@Model.Exception.MessageしてみてくださいShared/Error.cshtml
Muflix

一般に、構成変換(その値を変更する可能性のあるWeb.Debug.configなど)に注意し、ファイル内のそのセクション/プロパティの重複定義に注意してください(この場合は明らかに問題ではありませんでした)
Graham

回答:


164

これは、過去数日間私を狂気にさせており、それを回避することはできませんでしたが、ようやくそれを理解しました:

私のmachine.configファイルで、以下にエントリがありました<system.web>

<deployment retail="true" />

これは、web.configファイルで指定した他のすべてのcustomError設定をオーバーライドするように見えるため、上記のエントリを次のように設定します。

<deployment retail="false" />

これで、必要な詳細なエラーメッセージをもう一度見ることができます。

machine.configあります

32ビット

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

64ビット

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

それが誰かを助けて、髪を引っ張るのを数時間節約することを願っています。


いい視点ね。ただし、終了したら、小売モードをtrueに戻すことをお勧めします(または、web.configでデバッグモードをオフにすると、開発マシンで煩わしくなります)。weblogs.asp.net/lasse/archive/2009/04/28/…を
スティーブンケネディ

これは.NET 4.0のデフォルト設定のようです-同じ問題が発生しました。本番環境で使用するのが適切な設定であることに同意しますが、デバッグ時にはREALエラーを確認することが非常に重要です。
ジェレミー

時間を節約するだけでなく、命も救った。それがまさに私にとってうまくいったことでした
Pouya Samie

142

「オフ」では大文字と小文字が区別されます。

"O"がweb.configファイルで大文字になっているかどうかを確認してください。


49

この質問にさらに状況を追加するために(これは私がまったく同じ問題を抱えていたので私が見たところだからです)、ここに私の答えがあります:

私の場合、一般的なエラーからテキストを切り取って貼り付けましたが、何が問題なのかを確認したい場合は、

<system.web>
   <customErrors mode="Off"/>
</system.web>

したがって、これで修正されているはずですが、もちろんそうではありません!私の問題は、(コンパイルおよび認証ノードの前に)数行上に<system.web>ノードがあり、その数行下に終了タグ</system.web>があったことです。これを修正したら、問題は解決しました。私がすべきだったのは、この行だけをコピー/貼り付けすることです:

<customErrors mode="Off"/>

これは、「破壊への道をコピーして貼り付ける」という章で、私が何度も何度も繰り返している愚かなことの記録からのものです。


質問:この回答は、ASPがweb.configおよびその他の構成ファイルを上から読み取ることを意味します。つまり、トップダウンです。構成ファイルは「単一インスタンス」として読み取られると思いました。つまり、コンパイラーはまず構成ファイルを正確に解析してからコンパイルしますが、1行ごとにその場でコンパイルしているようです。本当?
Fandango68

@ Fernando68、これは別の質問として入れる方がよいかもしれません-コメントでの議論は正確には最適ではありません。私は.NETエンジニアではありませんが、.NETが1行ずつコンパイルしていないことは明らかです。これはXmlファイルであるため、階層的です。ただし、階層が適切に形成されていない場合、XMLパーサーは構文解析中に例外をスローします。つまり、XMLファイル全体を全体として取得する必要があります。ただし、不正なXmlが検出されると、必要なオブジェクトをまったく構築できません。
Cyber​​herbalist 2015年

私はすでに別の質問としてそれを上げましたstackoverflow.com/questions/30471043/…。返信ありがとうございます。これは、他の投稿で私が得た答えです。乾杯
Fandango68

10

Sharepoint 2010アプリケーションの場合は、編集C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\web.configして定義する必要もあります<customErrors mode="Off" />


7

ここで説明したもののほとんどを試しました。私はVWDを使用しており、デフォルトのweb.configファイルには以下が含まれています。

    <customErrors mode="RemoteOnly" defaultRedirect="GenericErrorPage.htm">
        <error statusCode="403" redirect="NoAccess.htm" />
        <error statusCode="404" redirect="FileNotFound.htm" />
    </customErrors>

mode = "RemoteOnly"をmode = "Off"に変更しました。まだ喜びはありません。次に、IISマネージャー、プロパティ、ASP.Netタブ、構成の編集を使用して、CustomeErrorsタブを選択しました。これはまだRemoteOnlyを示していました。これをオフに変更すると、最終的に詳細なエラーメッセージが表示されます。

web.configを調べたところ、system.webに2つのCustomErrorsノードがあることがわかりました。そして、私は2番目のエントリーに気づきました(私が変更したのはコメントの中にありました)。したがって、リモートサーバー上のweb.configを検査するためにメモ帳を使用しないようにしてください。

ただし、IISの編集設定を使用すると、web.configのエラーについてエラーが発生します。次に、「web.configにXML構文エラーはありますか」というすべての回答を除外できます。


Webサイトレベルでweb.configを変更するとうまくいきました。以前は、アプリケーションのweb.configファイルの読み込みをいじって、失敗していました。ありがとう!
The1nk 2013年

7

これを実際に解決するために機能した答えの1つは、私がここで見つけたものです:https : //stackoverflow.com/a/18938991/550975

これをあなたに追加してくださいweb.config

<configuration>  
  <system.webServer>  
    <httpErrors existingResponse="PassThrough"/>  
  </system.webServer>  
<configuration>

3
必要な<httpErrors errorMode="Detailed" />すべての情報が得られたことがわかりました`
alastairtree

6

アクセスできる場合は、通常、イベントビューアでエラーに関する詳細情報を確認できます。プロバイダーがmachine.configでオーバーライドするか、retail属性をtrueに設定することにより、カスタムエラーがまったく表示されないようにした可能性もあります(http://msdn.microsoft.com/en-us/library/ms228298( VS.80).aspx)。


5

私もこの問題を抱えていましたが、Apacheとmod_monoを使用した場合。そのような状況にいる他の人は、web.configを変更した後にApacheを再起動して、新しいバージョンを強制的に読み込ませる必要があります。


5

それでもそのページが表示される場合は、Web.Configを通過する前に爆発している可能性があります。

ASP.Netに、.Net Frameworkフォルダ、IISメタベースなどに必要な権限があることを確認してください。ASP.Netが正しくインストールされ、IISに正しく関連付けられていることを確認する方法はありますか?

編集:グレッグのコメントの後、私はあなたに投稿しましたが、あなたが投稿したのはごく最小限のweb.configであると思いましたが、それ以外にもありますか?もしそうなら、web.config全体を投稿できますか?


私がこの問題に何度か遭遇したとき、それはweb.configのエラーであることが判明しました-必ず最初に細かい櫛を使ってそれを調べてください。
Greg Hurlman、2008

はい、怒っています。web.configをこの最小限の設定に上書きしました。それでも喜びがない
Radu094 2008

使用されているアプリケーションプールのユーザーには、アプリのデプロイ先のディレクトリに対する読み取り権限がありませんでした。それでも問題が発生したことを知らせるエラーが表示されなかった理由を理解できません。
lambacck 2009

多くの場合、このエラーはシステム/セキュリティイベントログ(IIS 7まで)でのみ見つかりますが、ほとんどの場合、イベントログに簡単にアクセスできることが問題です。
Nick Craver

5

私の問題は、これを私のweb.configで定義していたことでした

<httpErrors errorMode="Custom" existingResponse="Replace">
  <remove statusCode="404" />
  <remove statusCode="500" />
  <error statusCode="404" responseMode="ExecuteURL" path="/Error/NotFound" />
  <error statusCode="500" responseMode="ExecuteURL" path="/Error/Internal" />
</httpErrors>

2
<httpErrors errorMode="Detailed"例として役立つ代替品
-it3xl

2

実際、私のWebアプリをホストしているときに私が見つけたのは、ローカルマシンで開発したコードが、ホスティング会社が提供しているものよりも高いバージョンであることです。管理者権限がある場合は、Webホスティング設定でMicrosoft ASP.NETバージョンのサポートを変更できる場合があります


2

この問題が発生したのは、IISユーザーがWebサーバーのマシン構成にアクセスできないためでした。


2

また、このエラーが発生しました。私たちの場合は、アプリケーションプールユーザーがweb.configファイルへのアクセス許可を持っていなかったためです。アクセス許可を失った理由(以前はすべて問題なかった)は、rarファイルにサイトのバックアップがあり、web.configのバックアップバージョンをrarからサイトにドラッグしたためです。これにより、ログオンしたユーザーである私を除いて、web.configファイルに対するすべての権限が削除されたようです。

フォルダレベルでアクセス許可を繰り返し確認しましたが、ファイルレベルでは確認しなかったため、これを理解するにはしばらく時間がかかりました。


2

私は同じ問題を抱えていましたが、別の方法で解決策を見つけました。

-

私がやったことは、私は開かれた高度な設定をするためにアプリケーションプールIISマネージャ

そこで32ビットアプリケーション有効にするをTrueに設定しました


1

アプリケーションを再起動してみてください(app_offline.htmを作成するのではなく削除します)。それでも同じエラーメッセージが表示される場合は、web.configなどでcustomErrorsを1回だけ宣言していることを確認してください。web.configのエラーは、アプリケーションに奇妙な影響を与える可能性があります。


1
web.configを変更するたびに、ウェブサイトが再起動されます。app_offline.htmを作成する必要はありません。
Matt Frear、2010

確かに、なぜapp_offlineにアプリをリセットするよう提案したのかわかりません。:)
Adam Vigh、2010

1

web.configにæøåのような特殊文字はありますか?その場合は、エンコーディングがutf-8に設定されていることを確認してください。


1

このウェブアプリは、ウェブサイトのディレクトリツリーの他のアプリの下に設定されていますか?親のweb.configファイルに他の設定があるかどうかを確認します。また、ディレクトリをIISのアプリケーションディレクトリとして設定します。


1

MVCプレビュー4を使用している場合は、HandleErrorAttributeを使用しているため、これが発生している可能性があります。カスタムエラーをオフにした場合に例外を処理しないように、動作は5で変更されました。


1

サーバーマシンのブラウザーでWebサイトを表示することもできます。ASP.NETの開発はあまり行っていませんが、カスタムエラーには、セキュリティ対策としてサーバーに完全なエラーテキストのみを表示する設定があることを覚えています。


1

私は同様の問題を扱ったところです。私の場合、2.0 Webアプリを起動しようとしたときに、デフォルトのサイトのasp.netバージョンは1.1でした。エラーは非常に些細なものでしたが、カスタムエラーが解消されない理由はすぐには明確ではなく、ランタイムはイベントログに書き込みませんでした。明らかな修正は、IISのAsp.Netタブのバージョンと一致させることでした。


同じ問題がありました。「connectionstrings」ノードはフレームワーク1.1でエラーを引き起こしていましたが、アプリは2.0であるべき
でした


0

私も同じ問題を抱えていましたが、原因はIISがASP.NET 1.1を実行しており、サイトには.NET 2.0が必要だったことです。

エラーメッセージは何も表示せずに、数時間私を無茶苦茶にしました。


0

system.webの直後に追加してください。

ノードの終わりに向けて動かしませんでした。


0

config変換を実行している場合は、関連するweb.configファイルから次の行を削除する必要がある場合もあります。

<compilation xdt:Transform="RemoveAttributes(debug)" />

0

ここですべての答えを試しましたが、私のApplication_Error方法にはこれがあることがわかりました:

Server.ClearError();
Response.Redirect("/Home/Error");

これらの行を削除して設定すると、問題が修正されました。(クライアントはまだエラーページにリダイレクトされましたcustomErrors="On")。


0

私は同じ問題を抱えていましたが、イベントビューアのアプリケーションログを調べたところ、どの例外が発生したかが明確に示されています。私の場合、例外は以下のとおりでした...

例外情報:

Exception type: HttpException 
Exception message: The target principal name is incorrect.  Cannot generate SSPI context.
at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

The target principal name is incorrect.  Cannot generate SSPI context.

アプリケーションプールでパスワードを更新したところ、問題なく動作しました。


0

場合によっては、web.configが正しくフォーマットされていない可能性もあります。その場合、機能する前に1行ずつ確認する必要があります。多くの場合、ここでは書き換えルールが原因です。


0

それは本当に奇妙です。このエラーが発生し、サーバーを再起動すると表示されなくなりました。


0

私にとっては、system.webの上のweb.configの上位のエラーでした。

ファイルは存在しなかったため、その時点でエラーがスローされていました。System.Webセクションにまだ到達していないため、CUstomErrors(On)のサーバーのデフォルト設定を使用していました。


(この投稿は質問に対する質の高い回答を提供していないようです。回答を編集して改善するか、質問へのコメントとして投稿してください。)
sɐunıɔןɐqɐpSep
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.