6

他のサイトがエラーをデータベースに保存するために使用できる Web サービスを作成しました。その後、彼らは自分のサイトにアクセスしてエラーを表示したり、エラーを検索したり、エラーをフィルター処理したりできます。ただし、Web サービスで次のエラーが発生します。


System.Web.HttpContext は、パラメーターなしのコンストラクターがないため、シリアル化できません。

説明: 現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。

例外の詳細: System.InvalidOperationException: System.Web.HttpContext は、パラメーターなしのコンストラクターがないため、シリアル化できません。


Web サービスには、次の関数が含まれています。

【ウェブメソッド】
public static void LogError(HttpContext コンテキスト、Exception 例外、文字列 APIKey)
{
    //エラーを記録する
}

Web サービスを使用して例外をログに記録している外部サイトには、global.asax ファイルに次のコードが含まれています。

void Application_Error(オブジェクト送信者, EventArgs e)
{
    // 未処理のエラーが発生したときに実行されるコード

    WebService.Errors.ErrorHandler.LogError(HttpContext.Current, Server.GetLastError(), "NOLDFHOI");
}

HttpContext をサイトから Web サービスの関数に取得するにはどうすればよいですか?

4

2 に答える 2

9

HttpContextをシリアル化することはできません。最善の策は、HttpContextから必要な情報をカプセル化するカスタムクラスを作成し、それをWebMethodに渡すことです。

于 2009-11-12T17:28:15.913 に答える
0

収集したい種類の情報を保持するように設計された、シリアル化可能なクラスを作成する必要があります。次に、そのクラスに静的メソッドを作成します。これにより、クラスの新しいインスタンスが作成され、必要な情報が収集されます。

LogErrorに渡されるのはこの新しいクラスです。

于 2009-11-12T17:28:01.233 に答える