1

WCF REST json サービス (WebHttpBinding) を実行しています。純粋な WCF セッションはこの種のバインドでは機能しないため、asp.net セッションを使用しています。したがって、次のように設定します。

<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

私たちのweb.configで、そして:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]

サービスの実装に加えて。次のようないくつかのサービス方法があります。

public void OpenSession(string userName)
public void GetSomething(int somethingId)
public void CloseSession()

次に、各メソッドで HttpContext の sessionId をテストします。

HttpContext.Current.Session.SessionID

問題は、常に変化していることです。Web ブラウザーでOpenSession?userName='toto'を呼び出し、その直後にGetSomething?somethingId=1234を呼び出すと、セッション ID が変更されます。

Cookie が wcf によって適切に処理されていないようです。フィドラーで OpenSession メソッドを呼び出すと、http ヘッダーで、サービスから返される「Set-Cookie」がありません。

4

1 に答える 1

1

見つけた :

既定では、WCF はクライアント側で有効になっている Cookie を持っていません。そのため、サーバーが Cookie を必要とする場合、プロパティ HttpTransportBindingElement.AllowCookies を使用して、クライアントのバインディングで Cookie を有効にする必要があります。

それはこの記事にあります。役に立つかどうかを確認してください:http://blogs.msdn.com/b/wenlong/archive/2006/01/23/516041.aspx

于 2011-06-29T09:51:08.130 に答える