Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.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# HTTP状态401:从ExtendedPSI调用时未经授权_C#_Web Services_Sap Pi_Project Server 2007 - Fatal编程技术网

C# HTTP状态401:从ExtendedPSI调用时未经授权

C# HTTP状态401:从ExtendedPSI调用时未经授权,c#,web-services,sap-pi,project-server-2007,C#,Web Services,Sap Pi,Project Server 2007,我目前正在尝试开发一个ExtendedPSI Web服务,它反过来调用许多现有的PSI Web服务。问题是我收到了错误 System.Net.WebException:请求失败,HTTP状态为401:未经授权 当我尝试使用我创建的ExtendedPSI从访问现有PSI服务时 如果我使用以下代码段对ExtendedPSI中的凭据进行硬编码,我可以使服务正常工作: resWS.Credentials = new NetworkCredential("userName", "userPass", "d

我目前正在尝试开发一个ExtendedPSI Web服务,它反过来调用许多现有的PSI Web服务。问题是我收到了错误

System.Net.WebException:请求失败,HTTP状态为401:未经授权

当我尝试使用我创建的ExtendedPSI从访问现有PSI服务时

如果我使用以下代码段对ExtendedPSI中的凭据进行硬编码,我可以使服务正常工作:

resWS.Credentials = new NetworkCredential("userName", "userPass", "domain");
但当我使用:

resWS.Credentials = CredentialCache.DefaultCredentials;
我已尝试CredentialCache.DefaultNetworkCredentials,但通过HTTP或FTP读取此文件无效

我已经阅读了许多文章,其中提出了一些建议,例如启用Windows身份验证和删除匿名访问等。无论是在客户端web.config中还是在调用webapp的虚拟机上,我都在使用SoapUI调用ExtendedPSI服务,因为最终的解决方案将由ESB平台即SAP PI调用

但是使用SoapUI,我通过在SoapUI界面中提供我的登录详细信息,成功地依次调用了ExtendedPSI服务中调用的每个现有PSI服务web服务,因此我知道只要我可以传递凭据,现有服务就可以工作,但当 使用CredentialCache.DefaultCredentials

希望这对某些人来说是有意义的这是我第一次尝试web服务,如果有点模糊,我深表歉意。我真的不想在我的服务中硬编码登录详细信息,所以我希望有人以前遇到过这个问题,并且有一个解决方案我可以使用

我需要的信息是否保存在HttpContext中?我可以传递的加密令牌可能刚刚到达这里:?或者我需要一个普通用户来访问这些现有的PSI web服务

仅供参考:我遵循了这篇文章,我进一步扩展了这篇文章,称之为现有的PSI,但它假设某种类型的MS.NET客户端调用该服务

先谢谢你

问候,, TartanBono

您应该像这样更改应用程序的web.config。只需覆盖绑定节点中的安全节点:

我希望这将有助于:


我还写了一篇博客文章,用于设置与PSI的连接:

文档中描述的默认凭据不能使用HTTP或FTP。顺便问一下,正在使用的身份验证方案是什么?您的windows登录详细信息是否与此所需的信息相匹配?嗨,Jon,感谢您抽出时间,它的windows身份验证和详细信息在整个网络中都是一致的。正是这些细节,我硬编码到extendedPSI中,如果我硬编码它们,它工作得很好。我需要传递网络登录详细信息,例如,每个用户只能使用PSI web服务互操作/更新自己的时间表数据。希望这是有道理的。如果没有,很抱歉,但这对我来说是全新的:结核病
<binding name="WssInteropSoap">
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm"
        realm="" />
    <message clientCredentialType="UserName" algorithmSuite="Default" />
  </security>
</binding>
//credential impersonation (just if you changed your binding settings)
projectSvc.ClientCredentials.Windows.ClientCredential = new NetworkCredential("username", "password", "domain");
projectSvc.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;