Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WCF web服务IIS6 401从另一个WCF服务调用时发生未经授权的错误。从asmx/WinForms调用是可以的_C#_Wcf_Iis 6_Http Status Code 401 - Fatal编程技术网

C# WCF web服务IIS6 401从另一个WCF服务调用时发生未经授权的错误。从asmx/WinForms调用是可以的

C# WCF web服务IIS6 401从另一个WCF服务调用时发生未经授权的错误。从asmx/WinForms调用是可以的,c#,wcf,iis-6,http-status-code-401,C#,Wcf,Iis 6,Http Status Code 401,我在IIS6上有一个WCF服务。这是一个简单的WebRequest 当我从ASMX服务(托管在同一IIS6中)调用它时。一切都很顺利。 当我从WinForms应用程序调用它时。一切正常。 当我从另一个WCF服务调用它时,问题就出现了。然后response.GetResponseStream()抛出错误 我做错了什么 System.Net.WebRequest request = WebRequest.Create(full_path_to_the_webpage); request.Creden

我在IIS6上有一个WCF服务。这是一个简单的WebRequest

当我从ASMX服务(托管在同一IIS6中)调用它时。一切都很顺利。
当我从WinForms应用程序调用它时。一切正常。
当我从另一个WCF服务调用它时,问题就出现了。
然后response.GetResponseStream()抛出错误

我做错了什么

System.Net.WebRequest request = WebRequest.Create(full_path_to_the_webpage);
request.Credentials = new NetworkCredential(username_for_http_login, password_for_http_login);
request.PreAuthenticate = true;
request.UseDefaultCredentials = false;

WebResponse response = request.GetResponse();

Stream responseStream = response.GetResponseStream(); //THIS line returns 401 Unauthorized

事实证明,php脚本只需要用户名是小写的。 因此,这段代码现在正在愉快地工作

谢谢所有试图帮助我的人


致Rajesh:不,我没有将服务本身用于WebRequest。我使用WebRequest从另一台服务器调用了一个php文件。

您确定您的wcf服务在从服务调用API时需要自定义身份验证详细信息吗?你在asmx web服务和winforms中做过同样的事情吗?通过这个webrequest,我不是调用另一个web服务,而是调用一个具有基本身份验证的PHP页面。此webrequest位于我的WCF服务中。只有当我从另一个WCF服务调用此WCF服务时,问题才会出现。当我从ASMX或WinForms调用此Web服务时,一切正常。我的服务正在使用wsHttpBinding。U说它在winform中运行良好。所以我只想知道,你是否也在那里使用了身份验证?因为我认为wcf服务不需要身份验证,因为IIS的用户标识在域环境中用于身份验证,或者在独立环境中用于用户标识。所以,如果您的PHP web服务器也经过身份验证,那么我认为您不需要在这里进行显式身份验证。您只需使用UseDefaultCredentials=trueYes。从winforms消费时,我使用Windows身份验证来访问服务。我正在调用的PHP页面。正在使用与我的IIS6配置不同的用户/通行证。我没有办法更改PHP页面凭据。如果我从另一个WCF调用服务中的其他方法,那么它们工作得很好。仅此方法包含WebRequest。从另一个WCF服务调用时失败。当我看到您正在使用WebRequest调用WCF服务时,您的WCF服务是否作为REST服务公开?