任何人都可以帮忙,我正在尝试通过通道工厂调用休息服务,但发送我的凭据...休息服务使用 Windows 身份验证。
但通过以下代码,我得到“该工厂启用了手动寻址,因此发送的所有消息都必须预先寻址”。使用 GetMessage 时出错
我知道我的服务就像我删除 Windows 身份验证一样工作!但是在打开 Windows 身份验证并且不更改 clientCredentials 的情况下,我收到了 BAD REQUEST 我认为这是正常的...所以我需要发送我的客户端凭据
我有点失落。
ChannelFactory<IService> cf = new ChannelFactory<IService>(new WebHttpBinding(), "http://localhost:8000");
var defaultCredentials = cf.Endpoint.Behaviors.Find<ClientCredentials>();
cf.Endpoint.Behaviors.Remove(defaultCredentials);
// step two - instantiate your credentials
ClientCredentials loginCredentials = new ClientCredentials();
loginCredentials.UserName.UserName = "Test";
loginCredentials.UserName.Password = "test";
// step three - set that as new endpoint behavior on factory
cf.Endpoint.Behaviors.Add(loginCredentials); //add required ones
IService channel = cf.CreateChannel();
Console.WriteLine(channel.GetMessage("Dhananjay Get"));
Console.WriteLine(channel.PostMessage("Dhananjay Post"));
您需要添加 webHttp 行为,并将该行为连接到您的端点。最终结果将如下所示:
<system.serviceModel>
<services>
<service ...>
<endpoint behaviorConfiguration="webHttpBehavior" ...>
</endpoint>
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="webHttpBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
...
</system.serviceModel>
如果这没有帮助,请发布您的 web.config。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)