我有一个运行 WCF Net Tcp 绑定服务的 Windows 服务。所有绑定和端点信息都以编程方式设置。
_host.AddServiceEndpoint(typeof(IService), new NetTcpBinding(), serviceName);
在 sharepoint 中,我正在使用通道工厂访问此服务:
var channelFactory = new ChannelFactory<IService>(
new NetTcpBinding(),
new EndpointAddress(new Uri(connectionUrl))
);
return channelFactory.CreateChannel();
此代码使用 SharePoint 2007 运行良好。现在我们将 SharePoint 网站升级到 2010,基于表单的新声明身份不会发送客户端凭据。我得到这个错误。
System.IdentityModel.Tokens.SecurityTokenValidationException, System.IdentityModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
The service does not allow you to log on anonymously.
有谁知道我如何让 Channel Factory 发送应用程序池的凭据?现在我已经通过使用 RunWithElevatedPrivileges 解决了我的问题,但我并不热衷于这样做,除非我没有其他选择。