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です.
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チャネルを有効にすると、権限検証が行われます.