WCF 错误 401 未经授权仅在某些电脑上
Posted
技术标签:
【中文标题】WCF 错误 401 未经授权仅在某些电脑上【英文标题】:WCF Error 401 Unauthorized only on some pcs 【发布时间】:2013-03-18 17:39:17 【问题描述】:我有一个调用 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 错误?
【问题讨论】:
【参考方案1】:我的建议是尝试从客户端机器通过提琴手进行调用,并验证您是否可以通过 POST 获得预期结果。如果这成功了,我会调查您如何在 IIS 中托管服务。我曾多次看到问题是匿名或基本身份验证已关闭导致类似问题。
【讨论】:
我已启用匿名并分配了一个用户帐户,但它并没有解决问题。 Fiddler 是个好主意,但我从未使用过它,所以我将尝试使用它,看看能否获得一些成功的请求。 原来客户端的防火墙阻止了请求。谢谢。以上是关于WCF 错误 401 未经授权仅在某些电脑上的主要内容,如果未能解决你的问题,请参考以下文章