0

IIS7 でホストされている WCF サービスを呼び出す WinForms アプリがあります。何らかの理由で、WinForms アプリを介して WCF サービスに接続しようとすると、クライアント ネットワークに接続されているコンピューターで 401 Unauthorized エラーが発生します。私はこれを理解しようとかなりの時間を費やしましたが、これが私がこれまでに発見したことです.

  • WinForms アプリは、クライアント ネットワーク上にない他の PC で WCF サービス データを受信します。
  • クライアント ネットワークから、Web ブラウザーを介して WCF サービスを参照できます。
  • クライアント ネットワークからサービス メソッドを参照すると、予想どおり「メソッドは許可されていません」というエラーが表示されます。

また、WCF サービスは SOAP ではなく REST を使用していることにも注意してください。

すべてのサービス呼び出しを行うために使用するコードは次のとおりです。

            byte[] dataStream = Encoding.UTF8.GetBytes(strParameters);
            WebRequest webRequest = WebRequest.Create(strUrl + strFunction);
            webRequest.Method = "POST";
            webRequest.ContentType = "application/json";
            webRequest.ContentLength = dataStream.Length;
            Stream newStream = webRequest.GetRequestStream();

            newStream.Write(dataStream, 0, dataStream.Length);
            newStream.Close();
            WebResponse response = webRequest.GetResponse();
            Stream responseStream = response.GetResponseStream();
            StreamReader responseReader = new System.IO.StreamReader(responseStream, Encoding.UTF8);
            string responseString = responseReader.ReadToEnd();

クライアントのネットワークでのみ 401 エラーが発生する理由について、何か手がかりはありますか?

4

1 に答える 1

1

私の提案は、クライアントマシンからフィドラーを介して呼び出しを試み、POST を介して期待される結果を得ることができるかどうかを検証することです。これが成功した場合は、IIS でサービスをホストしている方法を調べます。問題が匿名であるか、基本認証がオフになっていて、同様の問題が発生したことが何度かありました。

于 2013-03-18T18:53:21.940 に答える