我正在支持一个较旧的Windows窗体应用程序,该应用程序调用WCF Web服务。我们的基础架构团队最近不得不将其迁移到更新的硬件(Win Server 2012)并应用新证书。现在,当我尝试从Web服务检索数据时,我收到以下消息:
无法返回当前服务的主要身份的有效ID 安全上下文
代码部分(如果这可能有帮助)它命中的是:
public TResult Execute<TResult>(Func<CustomServicesClient, TResult> proxy)
{
try
{
return proxy(Client); // fails here
}
catch (SoapException ex)
{
_client.Abort();
throw new CustomApplicationException(ex.Message, ex);
}
catch (Exception)
{
// rethrow any other exception not defined here
// You may want to define a custom Exception class to pass information such as failure count, and failure type
_client.Abort();
throw;
}
}
系统正在使用配置为:
的UserName凭据 <security mode="TransportWithMessageCredential">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
Web服务正好受到影响,因为当用户首次登录时,我可以在对服务的身份验证调用成功后逐步执行以下代码:
UraIdentity identity = Security.CustomAuthenticationManager.GetCustomIdentity(txtUserName.Text.Trim(), ds);
UraPrincipal.Attach(identity, PrincipalAttachType.WinApplication);
我环顾四周,那里确实缺乏可用的信息,所以我很难过。我应该考虑采取哪些措施来解决这个问题?