TransOrderPross类[ServiceContract]
    interface TransOrderPross
    {
        [OperationContract]
        void Add(TransOrder data);
        [OperationContract]
        List<TransOrder> FindAll();
        [OperationContract]
        void Update(Guid transorderid);
        [OperationContract]
        void Delete(Guid transorderid);
    }OperationPross类 [DataContract]
    public class OperationPross:TransOrderPross
    {
        #region 初始化
        public Guid TransOrderID
        {
            get;
            set;
        }
        public DateTime InputTime
        {
            get;
            set;
        }
        public string Updater
        {
            get;
            set;
        }
        public DateTime UpdateTime
        {
            get;
            set;
        }
        public int Status
        {
            get;
            set;
        }
        public int IsCancel
        {
            get;
            set;
        }
        public string Re
        {
            get;
            set;
        }
        public string Inputer
        {
            get;
            set;
        }
        public string TransOrderNO
        {
            get;
            set;
        }
        public string ConsignMan
        {
            get;
            set;
        }
        public string ReceiveMan
        {
            get;
            set;
        }
        public string OrderTotalFee
        {
            get;
            set;
        }
        public DateTime ConsignDate
        {
            get;
            set;
        }
        public string OrderLoading
        {
            get;
            set;
        }
        public string OrderUnloading
        {
            get;
            set;
        }        #endregion
        DataTransOrderDataContext db = new DataTransOrderDataContext();        
        public void Add(TransOrder data)
        {
            
            data.TransOrderID = TransOrderID;
            data.InputTime = InputTime;
            data.Updater = Updater;
            data.UpdateTime = UpdateTime;
            data.Status = Status;
            data.IsCancel = IsCancel;
            data.Re = Re;
            data.Inputer = Inputer;
            data.TransOrderNO = TransOrderNO;
            data.ConsignMan = ConsignMan;
            data.ReceiveMan = ReceiveMan;
            data.OrderTotalFee = OrderTotalFee;
            data.OrderLoading = OrderLoading;
            data.OrderTotalFee = OrderTotalFee;
            data.OrderUnloading = OrderUnloading;
            db.TransOrder.InsertOnSubmit(data);
            db.SubmitChanges();
        }
        
        public List<TransOrder> FindAll()
        {
            var result = from u in db.TransOrder select u;
            List<TransOrder> list = result.ToList<TransOrder>();
            return list;
        }
        public void Update(Guid transorderid)
        {
            var result = from u in db.TransOrder
                         where u.TransOrderID == transorderid
                         select u;
            foreach (TransOrder data in result)
            {
                data.TransOrderID = TransOrderID;
                data.InputTime = InputTime;
                data.Updater = Updater;
                data.UpdateTime = UpdateTime;
                data.Status = Status;
                data.IsCancel = IsCancel;
                data.Re = Re;
                data.Inputer = Inputer;
                data.TransOrderNO = TransOrderNO;
                data.ConsignMan = ConsignMan;
                data.ReceiveMan = ReceiveMan;
                data.OrderTotalFee = OrderTotalFee;
                data.OrderLoading = OrderLoading;
                data.OrderTotalFee = OrderTotalFee;
                data.OrderUnloading = OrderUnloading;
                db.SubmitChanges();
            }
        }
        
        public void Delete(Guid transorderid)
        {
            var resutlt = from u in db.TransOrder
                         where u.TransOrderID == transorderid
                         select u;
            db.TransOrder.DeleteAllOnSubmit(resutlt);
            db.SubmitChanges();
        }
    }开启服务的Form窗体,点击一个按钮后服务正常开启 public partial class ServiceMain : Form
    {
        public ServiceMain()
        {
            InitializeComponent();
        }
        Uri baseAddress = new Uri("http://localhost:8001/");
        string WCFservice = "DemoWCF";
        private void btn_Off_Click(object sender, EventArgs e)
        {
            ServiceHost Host = new ServiceHost(typeof(OperationPross), baseAddress);            Host.AddServiceEndpoint(typeof(TransOrderPross), new BasicHttpBinding(), WCFservice);            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            Host.Description.Behaviors.Add(smb);            Host.Open();
            TB_State.Text = "启动";
            TB_Address.Text = baseAddress.ToString() + WCFservice;
            
            MessageBox.Show("服务正常开启!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            BtnClose.Enabled = true;
            btn_Off.Enabled = false;
           // Host.Close();
        }
            private void BtnClose_Click(object sender, EventArgs e)
        {
            Uri baseAddress = new Uri("http://localhost:8001/");            ServiceHost Host = new ServiceHost(typeof(OperationPross), baseAddress);            Host.AddServiceEndpoint(typeof(TransOrderPross), new BasicHttpBinding(), WCFservice);            ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
            smb.HttpGetEnabled = true;
            Host.Description.Behaviors.Add(smb);
 Host.Close();
            MessageBox.Show("服务关闭成功!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
            TB_State.Text = "关闭";
            TB_Address.Text = "尚未获得有效的地址信息!";
           
            BtnClose.Enabled = false;
            btn_Off.Enabled = true;
        }        private void button1_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }       
    }Main启动函数,启动Form窗体class Program
    {
        static void Main(string[] args)
        {
            ServiceMain f = new ServiceMain();
            Application.Run(f);
            
        }
    }现在我一开启服务后地址是:http://localhost:8001/DemoWCF,可访问这个地址时出现:由于 ContractFilter 在 EndpointDispatcher 不匹配,因此 Action 为“”的消息无法在接收方处理。这可能是由于协定不匹配(发送方和接收方 Action 不匹配)或发送方和接收方绑定/安全不匹配。请检查发送方和接收方是否具有相同的协定和绑定(包括安全要求,如 Message、Transport、None)这样的错误,有没有人遇到过啊,是不是我这样有问题.请大虾们指点.感激不尽

解决方案 »

  1.   

    晕,我就不信没人会,现在就是客户端调用的时候出现:
     无法连接到 http://localhost:8001/DemoWCF。TCP 错误代码 10061: 由于目标机器积极拒绝,无法连接。 127.0.0.1:8001。  ---> System.Net.WebException: 无法连接到远程服务器 ---> System.Net.Sockets.SocketException: 由于目标机器积极拒绝,无法连接。 127.0.0.1:8001在服务开启的情况下,我输入这个服务地址:http://localhost:8001/DemoWCF
    出现:由于 ContractFilter 在 EndpointDispatcher 不匹配,因此 Action 为“”的消息无法在接收方处理。这可能是由于协定不匹配(发送方和接收方 Action 不匹配)或发送方和接收方绑定/安全不匹配。请检查发送方和接收方是否具有相同的协定和绑定(包括安全要求,如 Message、Transport、None
    我想是不是这个原因导致的啊.帮帮忙啊,大哥些
      

  2.   

    你在右键 添加服务你把uri地址复制到里面 前往,,,试试是否能找到该服务...
      

  3.   

    楼上的兄弟找不到.就报一样的错.
    下载“http://localhost:8001/DemoWCF”时出错。
    请求失败,错误信息为:
    --
    <s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><s:Fault><faultcode xmlns:a="http://schemas.microsoft.com/ws/2005/05/addressing/none">a:ActionNotSupported</faultcode><faultstring xml:lang="zh-CN">由于  ContractFilter 在 EndpointDispatcher 不匹配,因此 Action 为“”的消息无法在接收方处理。这可能是由于协定不匹配(发送方和接收方 Action 不匹配)或发送方和接收方绑定/安全不匹配。请检查发送方和接收方是否具有相同的协定和绑定(包括安全要求,如 Message、Transport、None)。</faultstring></s:Fault></s:Body></s:Envelope>
    --.
    元数据包含无法解析的引用:“http://localhost:8001/DemoWCF”。
    服务 http://localhost:8001/DemoWCF 不支持内容类型 application/soap+xml; charset=utf-8。客户端和服务绑定可能不匹配。
    远程服务器返回错误: (415) Cannot process the message because the content type 'application/soap+xml; charset=utf-8' was not the expected type 'text/xml; charset=utf-8'.。
    如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。我真的不知道哪配错了.
      

  4.   

    本地右址添加用http://localhost:8001/就可以找到服务,多了一个/WCF,但我把config配置文件里面的路径改为
    <client>
                <endpoint address="http://localhost:8001/" binding="basicHttpBinding"
                    bindingConfiguration="BasicHttpBinding_TransOrderPross" contract="TransOrderPross"
                    name="BasicHttpBinding_TransOrderPross" />
            </client>
    还是不正确,状态还是是Created,可客户端添加服务时都可以找到这个的呀
      

  5.   

    我在客户端检测连接状态一直是created,重新引用也不行的呀.看来CSDN也就这样了
    居然没人会
      

  6.   

    你的
    [OperationContract]
            void Add(TransOrder data);
            [OperationContract]
            List<TransOrder> FindAll();这个TransOrder代码发来看看啦。还有,你private void BtnClose_Click(object sender, EventArgs e)方法应该是关不掉btn_Off_Click(object sender, EventArgs e)方法中Open的Host。
      

  7.   

    接口方法参数中没有OperationPross
    你把[DataContract]放在OperationPross上干什么
      

  8.   

    没细看,你说action为空,没处理,
     那你发送时,判断一下,为空就加点东西.,.
    加个属性也好....
      

  9.   

    服务端和客户端binding不一致吧
    确认下服务端是不是basicHttpBinding
      

  10.   

    Host.AddServiceEndpoint(typeof(TransOrderPross), new BasicHttpBinding(), WCFservice);最后一个参数有错("WCFservice")这应该是地址或者""也可
      

  11.   

    OperationPross类
    中的   public DateTime UpdateTime
            {
                get;
                set;
            }
            public int Status
            {
                get;
                set;
            }
    在契约发布的时候都不能序列化的。。