WebServiceがクッキーを有効にする別の方法
1694 ワード
多くの場合、aspを使いたいと思っています.Netのmembershipは、ロール検証などの問題を迅速に処理できます.また、カスタマーサービス側はbsシステムと口座を共用することができる.
WebserviceのproxyクラスはWebClientProtocolから継承され、WebClientProtocolには2つの方法が含まれています.
protected virtual WebRequest GetWebRequest(Uri uri);
protected virtual WebResponse GetWebResponse(WebRequest request);
Webserviceを呼び出すのも本質的にhttpのPostリクエストであり、通常のhtmlとは異なり、webserviceリクエストのコンテンツとサービスが返すコンテンツはhtmlではなくxml(soapプロトコル)であることはよく知られているはずです.この2つのメソッドを見ると、proxyはサービスを呼び出すときに、必ずこの2つのメソッドを呼び出すことができます.だから、私たちはこの2つの方法を適切に書き直すだけでOKです.
httpでリクエストしたヘッダから直接クッキーを切り取り、放送前にRequestのヘッダにクッキーを添付します.
サービス・エンドconfigは構成する必要があります.
すべてのmoduleチャネルを有効にすると、権限検証が行われます.
WebserviceのproxyクラスはWebClientProtocolから継承され、WebClientProtocolには2つの方法が含まれています.
protected virtual WebRequest GetWebRequest(Uri uri);
protected virtual WebResponse GetWebResponse(WebRequest request);
Webserviceを呼び出すのも本質的にhttpのPostリクエストであり、通常のhtmlとは異なり、webserviceリクエストのコンテンツとサービスが返すコンテンツはhtmlではなくxml(soapプロトコル)であることはよく知られているはずです.この2つのメソッドを見ると、proxyはサービスを呼び出すときに、必ずこの2つのメソッドを呼び出すことができます.だから、私たちはこの2つの方法を適切に書き直すだけでOKです.
private static string currentCookie = string.Empty;
protected override WebRequest GetWebRequest(Uri uri)
{
WebRequest request = base.GetWebRequest(uri);
if (!string.IsNullOrEmpty(currentCookie))
{
request.Headers[HttpRequestHeader.Cookie] = currentCookie;
}
return request;
}
protected override WebResponse GetWebResponse(WebRequest request)
{
WebResponse response = base.GetWebResponse(request);
if (!string.IsNullOrEmpty(response.Headers[HttpResponseHeader.SetCookie]))
currentCookie = response.Headers[HttpResponseHeader.SetCookie];
return response;
}
httpでリクエストしたヘッダから直接クッキーを切り取り、放送前にRequestのヘッダにクッキーを添付します.
サービス・エンドconfigは構成する必要があります.
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
すべてのmoduleチャネルを有効にすると、権限検証が行われます.