在C#中键入转换问题,在.NET中键入wcf标题
我现在正在使用visual studio 2013开发WCF服务。“我的服务”包含必须传递的自定义标头字段。字段名是我开发的在C#中键入转换问题,在.NET中键入wcf标题,c#,.net,wcf,C#,.net,Wcf,我现在正在使用visual studio 2013开发WCF服务。“我的服务”包含必须传递的自定义标头字段。字段名是我开发的“lisenseKey”。WCF服务运行良好。现在我将调用我的服务进行测试。我向客户端项目添加了一个服务引用。现在我这样打电话: MyService.Myservice proxy = new MyService.Myservice(); proxy.LisenseKey = "xxxxxx"; Label1.Text = proxy.GetMessage(TextBox1
“lisenseKey”
。WCF服务运行良好。现在我将调用我的服务进行测试。我向客户端项目添加了一个服务引用。现在我这样打电话:
MyService.Myservice proxy = new MyService.Myservice();
proxy.LisenseKey = "xxxxxx";
Label1.Text = proxy.GetMessage(TextBox1.Text);
当我像这样分配许可证密钥值时,它用红色下划线显示错误:
“无法将类型字符串隐式转换为MyService.MyService.string”
在这种情况下如何输入cast?或者有没有办法通过标题?我不知道如何使用
“MessageHeader”
这是我的服务代码。我只是尝试使用“GetMessage”方法
[服务合同]
公共接口IMyservice
{
[经营合同]
无效销钉();
[经营合同]
字符串GetMessage(字符串名称);
}
公共类MyServiceMessageInspector:System.ServiceModel.Dispatcher.IDispatchMessageInspector
{
公共对象AfterReceiveRequest(参考System.ServiceModel.Channels.Message request,System.ServiceModel.IClientChannel,
System.ServiceModel.InstanceContext(InstanceContext)
{
if(request.Headers.FindHeader(“LisenseKey”,即“”)=-1)
{
抛出新的FaultException(“未提供Lisense密钥”);
}
var lisenseKey=request.Headers.GetHeader(“lisenseKey”,即“”);
if(string.IsNullOrEmpty(lisenseKey))
{
抛出新的FaultException(“Lisnse密钥无效”);
}
如果(lisenseKey!=“12345x”)
{
抛出新的FaultException(“Lisense密钥无效”);
}
返回instanceContext;
}
SendReply之前的公共无效(参考System.ServiceModel.Channels.Message reply,object correlationState)
{
}
}
公共类MyServiceMessageInspectorBehavior:属性,System.ServiceModel.Description.IServiceBehavior
{
public void AddBindingParameters(System.ServiceModel.Description.ServiceDescription ServiceDescription,
System.ServiceModel.ServiceHostBase ServiceHostBase,
System.Collections.ObjectModel.Collection终结点,
System.ServiceModel.Channel.BindingParameterCollection绑定参数)
{
}
public void ApplyDispatchBehavior(System.ServiceModel.Description.ServiceDescription ServiceDescription,
System.ServiceModel.ServiceHostBase(服务主机库)
{
foreach(serviceHostBase.ChannelDispatchers中的ChannelDispatcher ChannelDispatcher)
{
foreach(channelDispatcher.Endpoints中的var endpointDispatcher)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(新的MyServiceMessageInspector());
}
}
}
公共无效验证(System.ServiceModel.Description.ServiceDescription ServiceDescription,System.ServiceModel.ServiceHostBase ServiceHostBase)
{
}
}
您可以发布服务代码吗?这是我的服务代码。谁能帮我一下吗。我只是想使用“GetMessage”服务
[ServiceContract]
public interface IMyservice
{
[OperationContract]
void DoWork();
[OperationContract]
string GetMessage(string name);
}
public class MyServiceMessageInspector:System.ServiceModel.Dispatcher.IDispatchMessageInspector
{
public object AfterReceiveRequest(ref System.ServiceModel.Channels.Message request,System.ServiceModel.IClientChannel channel,
System.ServiceModel.InstanceContext instanceContext)
{
if(request.Headers.FindHeader("LisenseKey","")==-1)
{
throw new FaultException("Lisense Key Was Not Provided");
}
var lisenseKey = request.Headers.GetHeader<string>("LisenseKey", "");
if (string.IsNullOrEmpty(lisenseKey))
{
throw new FaultException("Lisnse key is not valid");
}
if(lisenseKey!="12345x")
{
throw new FaultException("Lisense key is not valid");
}
return instanceContext;
}
public void BeforeSendReply(ref System.ServiceModel.Channels.Message reply,object correlationState)
{
}
}
public class MyServiceMessageInspectorBehaviour:Attribute,System.ServiceModel.Description.IServiceBehavior
{
public void AddBindingParameters(System.ServiceModel.Description.ServiceDescription serviceDescription,
System.ServiceModel.ServiceHostBase serviceHostBase,
System.Collections.ObjectModel.Collection<System.ServiceModel.Description.ServiceEndpoint> endpoints,
System.ServiceModel.Channels.BindingParameterCollection bindingParameters)
{
}
public void ApplyDispatchBehavior(System.ServiceModel.Description.ServiceDescription serviceDescription,
System.ServiceModel.ServiceHostBase serviceHostBase)
{
foreach(ChannelDispatcher channelDispatcher in serviceHostBase.ChannelDispatchers)
{
foreach(var endpointDispatcher in channelDispatcher.Endpoints)
{
endpointDispatcher.DispatchRuntime.MessageInspectors.Add(new MyServiceMessageInspector());
}
}
}
public void Validate(System.ServiceModel.Description.ServiceDescription serviceDescription,System.ServiceModel.ServiceHostBase serviceHostBase)
{
}
}