在C#中键入转换问题,在.NET中键入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

我现在正在使用visual studio 2013开发WCF服务。“我的服务”包含必须传递的自定义标头字段。字段名是我开发的
“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)
        {

        }
    }