5

SQL Server データベースからデータをプルおよびプッシュする mvc webapi サービスのセットアップがあります。

webapi を保持する Web プロジェクト内に、webapi メソッドからアクセスされるいくつかのグローバル変数を保持するだけの静的クラスがあります。以下は、静的クラスの非常に簡略化された例です。

public static class SystemProperties
{
    public static int currentContactID;
}

WebApi にアクセスすると、呼び出しの HTTP ヘッダーから ContactID を削除し、SystemProperties.CurrentContactID をそれに設定します。

webapi のメソッドよりも、データ呼び出しのために SystemProperties.CurrentContactID にアクセスします。

現在の連絡先 ID が混同されている同時 webapi 呼び出しがある場合に問題を発見しました。

私の質問は、呼び出しセッション間で静的クラス メンバーがどのように共有されるかです。ベストドレッサーでかなり最後になるのでしょうか。前の人がまだそこにいる場合、変数を詳細で上書きする新しい人にめちゃくちゃにされますか?

これらの詳細を保存するために別の方法を使用する必要がありますか?

前もって感謝します

4

2 に答える 2

0

はい、別の方法を使用する必要があります。

Web API では、リクエストは HttpRequestMessage として届きます。HTTP メッセージ ハンドラー (DelegatingHandler から継承) を実装し、そこから HTTP ヘッダーから CurrentContactID を取り除くことができます。また、削除した CurrentContactID 値を取得して、HttpRequestMessage オブジェクトのプロパティ ディクショナリに追加することもできます。

HTTP メッセージ ハンドラーの実装に関する記事は次のとおりです: http://www.asp.net/web-api/overview/working-with-http/http-message-handlers

HttpRequestMessage の Properties プロパティに関する記事は次のとおりです: http://msdn.microsoft.com/en-us/library/system.net.http.httprequestmessage.properties.aspx

HttpRequestMessage の Properties プロパティはコントローラーでも使用できるため、静的クラスまたはセッションの代わりに使用するのに適していることに注意してください。

于 2013-10-02T04:40:13.130 に答える