mvc の比較的新しい。私は、誰かが私の会社を辞めた後に引き継いだ、奇妙に設計されたプロジェクトと考えているものを持っています。2 つの「サービス層」があります。メイン層は、REST クエリを想定する MVC 4 プロジェクトです。仕組みは次のとおりです。
別のプロジェクトの asp.net ページで、ユーザーは REST クエリを入力できます。同じ asp.net ページが、入力された REST クエリを使用して serviceRequest.DownloadString を呼び出します。
これにより、mvc 4 プロジェクトで DelegatingHandler が呼び出されます。この DelegatingHandler は、リクエストで送信されたヘッダーの検証を行います。データが正しい場合、DelegatingHandler は、DelegatingHandler に渡されたのと同じ REST クエリを使用して base.SendAsync を呼び出します。
これにより、REST クエリによって呼び出される mvc 4 プロジェクトのコントローラーがアクティブになります。機能している場合、mvc 4 プロジェクトは xml を返します。
4. ほとんどの作業を行うために、コントローラは wcf プロジェクトからメソッドを呼び出します。
何が起こっているかというと、このアーキテクチャは、ビジュアル スタジオ内で実行すると正常に動作するということです。2 つのサービス層 (mvc 4 および wcf プロジェクト) がローカル マシン上の IIS アプリケーションに展開されている場合も、正常に動作します。
この問題は、サービス層が 2 台の別々のマシン (1 つは dmz にあり、もう 1 つはファイアウォール内のマシン) に展開されている場合に発生します。500 を返します。
フィドラーを使用して、接続文字列に関係する問題を 1 つ修正しました。それが完了すると、結果として 500 を得ましたが、他の情報は得られませんでした。この場合、フィドラーを再度実行すると、500を受け取っていることが確認されただけです。私は試しました:
両方のサービス層の構成にトレース コードを配置する
wcf レイヤーの既存の関数を使用して、コントローラーからテーブルにデバッグ情報を書き込みます。
mvc および wcf 構成ファイルにトレース コードを入れていない可能性があることに気付きましたが、単に mvc 4 プロジェクトを完全にバイパスしているように見えます。また、debug.write を使用できることに関する情報にも気付きました。これは実行可能なオプションですか。
これらの 2 つの手順のいずれも、問題の解決に近づくことはできませんでした。mvc 4 コードがまったく呼び出されず、delegatingHandler を起動するために serviceRequest.DownloadString が呼び出されるとエラーが発生するという印象を受けています。しかし、私が正しいかどうかを確認するためにどこを見ればよいかわかりません。asp.net ページを離れて mvc 4 プロジェクトに移動しようとしたときに、コードをたどるために使用できるコード (イベントなど) にスポットはありますか?
これをデバッグする最良の方法は何ですか? どんな助けでも大歓迎です。
ありがとう、
Fig0000