C# http上的WCF客户端数据

C# http上的WCF客户端数据,c#,.net,wcf,C#,.net,Wcf,我是WCF的新手,我创建了一个包含DataContract的服务,该DataContract应该保留datamember状态,但在调用getdata之后,返回的状态为null。虽然当我使用tcp时,该值已保存 [ServiceContract(Namespace = "http://KamiServiceHost.net/Go")] public interface IService1 { [OperationContract] DataItem GetData();

我是WCF的新手,我创建了一个包含DataContract的服务,该DataContract应该保留datamember状态,但在调用getdata之后,返回的状态为null。虽然当我使用tcp时,该值已保存

 [ServiceContract(Namespace = "http://KamiServiceHost.net/Go")]
public interface IService1
{
    [OperationContract]
    DataItem GetData();

    [OperationContract]
    void SaveData(DataItem item);
}

 [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service1 : IService1
{
    private DataItem _item1;
    private DataItem item
    {
        get { return _item1; }
        set { _item1 = value; }
    }

    public void SaveData(DataItem setitem)
    {
        item = setitem;
    }

    public DataItem GetData()
    {
        return item;
    }
}
主机app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <system.serviceModel>
    <services>
      <service name="Service.Service1" behaviorConfiguration="myServiceBehavior">
        <host>
          <baseAddresses>
            <add baseAddress="http://localhost:8000"/>
            <add baseAddress="net.tcp://localhost:9000"/>
          </baseAddresses>
        </host>
        <endpoint address="Service1" binding="basicHttpBinding" contract="Service.IService1"></endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="myServiceBehavior">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
 </configuration>
数据的值为空,我不知道为什么。。任何帮助都将不胜感激


谢谢

BasicHttpBinding不支持该实例模式:。如果没有会话支持,您在第一次调用时提供的对象实例将丢失

BasicHttpBinding不支持该实例模式:。如果没有会话支持,您在第一次调用时提供的对象实例将丢失

如果您的服务设置为每个实例,那么对于每个调用,您将在服务器上获得不同的服务类实例,因此您返回的项当然将为空。

如果您的服务设置为每个实例,然后,对于每个调用,您将在服务器上获得不同的服务类实例,因此返回的项当然将为空。

Web服务和Http是无状态的。您需要在WCF服务上启用会话,然后在会话中持久化项的值并使用它,或者根据筛选器从数据库检索项并返回back@Rajesh谢谢但是我没有得到我应该做的,我要让服务保存数据。能否提供更详细的答案?能否尝试将instanceContext从会话更改为instanceContext.Single.Web服务,并且Http是无状态的。您需要在WCF服务上启用会话,然后在会话中持久化项的值并使用它,或者根据筛选器从数据库检索项并返回back@Rajesh谢谢但是我没有得到我应该做的,我要让服务保存数据。能否提供更详细的答案?能否尝试将instanceContext从会话更改为instanceContext.Single。
  client.Open();
        var dataItem = new DataItem() { Name = "my object", Number = 12 };
        client.SaveData(dataItem);

        var data = client.GetData();

        Console.WriteLine(string.Format("Name: {0}    Number: {1}", data.Name, data.Number));