iis-7 読み込めませんでした IIS7ではなくWebApiの{"message": "エラーが発生しました"}




パーサーエラー 読み込めませんでした (5)

WebAPIエンドポイントに投稿するときも同様の問題がありました。 CustomErrors = Offを回すことで、DLLの1つである実際のエラーを見ることができました。

私はASP.NET MVC 4 WebApiを使って作業しており、IIS Expressのローカルコンピュータで実行しているので面白いです。 リモートコンピュータにもサービスを提供するようにIIS Expressを構成しました。私の会社のWebサーバーは、Webサーバーとしてコンピュータを使用しています。

これが最適ではない解決策であると判断した後、.NET 4.5をインストールした後にWebApiをリモートサーバーに配置することにしました。 Fiddlerを使用してローカルマシンのコントローラにPOSTを送信すると、正しい応答が返されますが、IIS7を実行しているWebサーバーにドメインを変更すると、同じPOSTがわかりにくい

{"メッセージ": "エラーが発生しました"}

メッセージ。 誰でも何が起こっているのか考えている?


テスト環境でエラーが発生したとき、私はいつもこの質問に遭遇します。「以前はこれをやったことがありますが、コードを修正してテスト環境に再デプロイする必要はありません。しかし、それは2つの変更を必要とする...それはもう何だった?

今後の参考のために

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

そして

<system.webServer>
  <httpErrors errorMode="Detailed" existingResponse="PassThrough"></httpErrors>
</system.webServer>

これが誰かを助ける場合:

私は同様の問題を抱えていました。

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

これは私にエラーに関するより多くのinfomartionを示しました:

"ExceptionMessage": "指定されたメタデータリソースを読み込めません。"、 "ExceptionType": "System.Data.Entity.Core.MetadataException"、 "StackTrace": "System.Data.Entity.Core.Metadata.Edm.MetadataArtifactLoaderCompositeResource .LoadResources(...

これは、私がedmxファイルを別の場所に移動し、config内のconnectionstringsノードを変更するのを忘れていたことを思い出したときです(connectionsstringsノードは「configSource」を使用して別ファイルに置かれましたが、別の話です)。


基本的に:

CustomErrors解決できない場合は、 IncludeErrorDetailPolicy代わりに使用します(たとえば、ASP.NETスタックが> 2012の場合)。

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

注意:詳細なエラー情報を返すことで、機密情報が「ハッカー」に漏れることに注意してください。 以下のこの回答に関するSimonのコメントを参照してください。

TL; DRバージョン

私にとってCustomErrorsは本当に役に立たなかった。 それはすでにOffに設定されていましたが、私はまだ穏やかan error has occurredというメッセージan error has occurred表示されます。 私は受け入れられた答えが3年前からであると思います。これは現在、Webの言葉では長い時間です。 私はWeb API 2とASP.NET 5(MVC 5)を使用していますが、MicrosoftはIIS専用の戦略から離れていますが、 CustomErrorsは古いSkool IISです。

とにかく、私はローカルでは持っていなかった生産上の問題がありました。 そして、私の開発マシンでできるように、Chromeの[ネットワーク]タブでエラーが表示されないことがわかりました。 最終的には、プロダクションサーバーにChromeをインストールしてから、サーバー自体にアプリケーションをブラウズすることで解決しました(「localhost」など)。 スタックトレースとすべてで、より詳細なエラーが発生しました。

その後、私はJimmy Bogardからこの記事を見つけました(注:JimmyはAutoMapperさんです! )。 面白いことに、彼の記事は2012年の記事でもありますが、 CustomErrorsはもうこれで役に立たないと説明していますが、グローバルWebApi設定で別のIncludeErrorDetailPolicyを設定することで 'エラーの詳細'を変更できます。 WebApiConfig.cs ):

GlobalConfiguration.Configuration.IncludeErrorDetailPolicy 
= IncludeErrorDetailPolicy.Always;

幸運にも彼はwebapi(2)がCustomErrors設定を聞くことをセットアップする方法についても説明します。 これはかなり賢明なアプローチです。これにより2012年に戻ることができます:P。

注:デフォルト値は 'LocalOnly'です。この記事を見つける前に、私が記述した方法で問題を解決できた理由を説明しています。 しかし、私は、誰もがプロダクションとスタートアップを遠隔操作できるだけではないことを理解しています(私はフリーランスとデベロッパーになることを決意するまではほとんどできませんでした)。


問題は、サーバー上ではなくローカルマシン上の依存関係の欠落です。 私たちの場合、それはDevart.Data.Linq dllでした。

その答えを得るために、私は500のエラーのためにIISトレースを有効にしました。 これは少し情報を与えましたが、本当に有用なのはweb.configの<system.web><customErrors mode="Off"/></system.web>されていました。 。 この依存関係を追加してローカルにコピーするように指示した後、サーバーが動作し始めました。







asp.net-web-api