14

ADO.Net Data Service ルックアップ機能を既存の Web ページに追加しています。Visual Studio から実行するとすべてがうまく機能しますが、IIS に展開すると、次のエラーが発生します。

リクエスト エラー
サーバーでリクエストの処理中にエラーが発生しました。詳細については、サーバー ログを参照してください。

デフォルトのページを表示しようとしても、次のようになります。

http://server/FFLookup.svc

サーバーに 3.5 SP1 がインストールされています。

不足しているものと、それが参照している「サーバー ログ」は何ですか? これ以上のエラー メッセージは見つかりません。

イベント ビューアー ログ (システムまたはアプリケーション) には何も記録されておらず、GET 以外の IIS ログには何も記録されていません。

2008-09-10 15:20:19 10.7.131.71 GET /FFLookup.svc - 8082 - 10.7.131.86 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-US)+AppleWebKit/525.13 +(KHTML,+like+Gecko)+Chrome/0.2.149.29+Safari/525.13 401 2 2148074254

スタック トレースは返されません。私が得る唯一の応答は、上記の「リクエストエラー」です。

ありがとう

パトリック

4

3 に答える 3

42

データ サービスに起因するエラーを詳細に表示するには、データ サービス定義の上に次のタグを配置します。

[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]  

これにより、ブラウザ ウィンドウとスタック トレースにエラーが表示されます。

これに加えて、dataservices はすべての例外を HandleException メソッドにスローするため、dataservice クラスにこのメソッドを実装すると、それにブレーク ポイントを設定して例外を確認できます。

protected override void HandleException(HandleExceptionArgs e)
{
  try
  {
    e.UseVerboseErrors = true;
  }
  catch (Exception ex)
  {
    Console.WriteLine(ex.Message);
  }
}
于 2008-11-10T05:28:59.950 に答える
13

上記のエラーに記載されている「サーバー ログ」を見つけました。

次のタグを追加して、web.config ファイルでトレースを有効にする必要があります。

    <system.diagnostics>
      <sources>
        <source name="System.ServiceModel.MessageLogging" switchValue="Warning, ActivityTracing" >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>

        <source name="System.ServiceModel" switchValue="Verbose,ActivityTracing"        >
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
        <source name="System.Runtime.Serialization" switchValue="Verbose,ActivityTracing">
            <listeners>
                <add name="ServiceModelTraceListener"/>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add initializeData="App_tracelog.svclog"   
                        type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                        name="ServiceModelTraceListener" traceOutputOptions="Timestamp"/>
    </sharedListeners>
</system.diagnostics>

これにより、web サイトのディレクトリに app_tracelog.svclog というファイルが作成されます。

次に、SvcTraceViewer.exe ユーティリティを使用してこのファイルを表示します。ビューアは、(通信に関する他の多くの情報と共に) エラーを強調表示するという優れた仕事をします。

注意: 上記のパラメータで作成されたログ ファイルは、非常に急速に大きくなります。デバッグ中のみ有効にしてください。

この特定のケースでは、Oracle Data Provider である OraDirect.Net のバージョンが正しくないことが問題でした。使用していたバージョンは 3.5 SP1 をサポートしていませんでした。

于 2008-09-11T00:29:00.803 に答える
0

私にとっては、同じ名前の 2 つのメソッド (意図しないオーバーロード) が原因でエラーが発生しました。

オーバーロードはサポートされていませんが、タイプ 'abc' にはオーバーロードされたメソッド 'Void SubmitCart(System.String, Int32)' があります。

サービスをデバッグモードで実行することでわかりました。

于 2010-07-05T22:31:11.893 に答える