我有一个调用 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 错误?