0

我有一个调用 IIS7 上托管的 WCF 服务的 WinForms 应用程序。由于某种原因,连接到客户端网络的计算机在尝试通过 WinForms 应用程序连接到 WCF 服务时会收到 401 Unauthorized 错误。我花了很多时间试图弄清楚这一点,这就是我到目前为止所发现的。

  • WinForms 应用程序在不在客户端网络上的任何其他 PC 上接收 WCF 服务数据。
  • 从客户端网络,我可以通过网络浏览器浏览到 WCF 服务就好了。
  • 从客户端网络,我可以浏览到服务方法并按预期得到“方法不允许”错误。

此外,应注意 WCF 服务使用的是 REST 而不是 SOAP。

这是我用来执行所有服务调用的代码:

            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 回答