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 未经授权仅在某些电脑上的主要内容,如果未能解决你的问题,请参考以下文章

Sonarqube TFS 任务返回错误 (401) 在一个项目上未经授权,但在其他项目上未授权

浏览网页错误类型大全

Android推送通知未经授权的错误401

AngularJS 中的 401 未经授权的错误处理

HTTP错误401.0 - 未经授权的错误消息

WCF Rest 自托管证书安全服务返回 401 未经授权