WCF错误401仅在某些PC上未经授权

时间:2013-03-18 17:39:18

标签: c# winforms wcf iis-7

我有一个WinForms应用程序,它调用IIS7上托管的WCF服务。出于某种原因,当尝试通过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错误?

1 个答案:

答案 0 :(得分:1)

我的建议是通过fiddler从客户端机器尝试调用,并验证是否可以通过POST获得预期的结果。如果这是成功的,我会研究如何在IIS中托管服务。我曾多次看到问题是匿名或基本身份验证被关闭导致了类似的问题。