c# - 如何将soap标头添加到WCF中的自动生成代理?
问题描述
到目前为止,我正在使用手动方式进行代理,这就是我处理标题的方式:
public abstract class UserClientBase<T> : ClientBase<T> where T : class
{
public UserClientBase()
{
string userName = Thread.CurrentPrincipal.Identity.Name;
MessageHeader<string> header = new MessageHeader<string>(userName);
OperationContextScope contextScope =
new OperationContextScope(InnerChannel);
OperationContext.Current.OutgoingMessageHeaders.Add(
header.GetUntypedHeader("String", "System"));
}
}
public class FooClient : UserClientBase<IFooService>, IFooService
{
public Foo Test()
{
return Channel.Test();
}
}
我的问题是..如何使用自动生成的代理来做到这一点?, 像这样:
using (FooServiceClient client = new FooServiceClient())
{
return await client.Test();
}
解决方案
和你之前做的完全一样。几乎。
Using Client As New FooServiceClient, Scope As New OperationContextScope(Client.InnerChannel)
Dim Header As New MessageHeader(Of String)(Thread.CurrentPrincipal.Identity.Name)
OperationContext.Current.OutgoingMessageHeaders.Add(Header.GetUntypedHeader("String", "System"))
Return await client.Test();
End Using
推荐阅读
- c# - 多次访问对象的公共字段还是将其缓存在变量中更好?
- angularjs - 带有所需字母数字的 AngularJs 输入
- qt - 发送信号后如何刷新qml中的组合框
- html - 用户上传文件后如何填充数据库
- python - Python数据框匹配列表中的字符串
- java - 如何启动 selenium Microsoft Edge?
- html - 如何使用带有 JSON 的 Angular/TypeScript 编写上传/下载代码?
- .net - 在 linux 上将 dotnet 可执行文件安装到 PATH 中
- c++ - 客户端-服务器之间的 tcp 传输是否有数据限制?
- vue.js - 替换标签动态返回对象而不是内容