我有一个WinForms应用程序,它调用IIS7上托管的WCF服务。出于某种原因,当尝试通过WinForms应用程序连接到WCF服务时,连接到客户端网络的计算机会收到401 Unauthorized错误。我花了很多时间试图解决这个问题,这是我到目前为止所发现的。
此外,应该注意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错误?
答案 0 :(得分:1)
我的建议是通过fiddler从客户端机器尝试调用,并验证是否可以通过POST获得预期的结果。如果这是成功的,我会研究如何在IIS中托管服务。我曾多次看到问题是匿名或基本身份验证被关闭导致了类似的问题。