WCF问题,高手请进...顶者有分,解决立马结贴~~~在线等
TransOrderPross类
- C# code
[ServiceContract] interface TransOrderPross { [OperationContract] void Add(TransOrder data); [OperationContract] List<TransOrder> FindAll(); [OperationContract] void Update(Guid transorderid); [OperationContract] void Delete(Guid transorderid); }
OperationPross类
- C# code
[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 Remark { 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.Remark = Remark; 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.Remark = Remark; 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窗体,点击一个按钮后服务正常开启
- C# code
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窗体
- C# code
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)这样的错误,有没有人遇到过啊,是不是我这样有问题.请大虾们指点.感激不尽
[解决办法]
帮你顶下
[解决办法]
不会,期待别人帮你回答
[解决办法]
[解决办法]
UP UP
[解决办法]
你在右键 添加服务
你把uri地址复制到里面 前往,,,试试是否能找到该服务...
[解决办法]
重新引用一下
[解决办法]
UP.............
[解决办法]
职业代顶
[解决办法]
这问题太难了,我也不知道!.......
[解决办法]
你的
- C# code
[OperationContract] void Add(TransOrder data); [OperationContract] List<TransOrder> FindAll();
[解决办法]
没细看,你说action为空,没处理,
那你发送时,判断一下,为空就加点东西.,.
加个属性也好....
[解决办法]
帮顶....
[解决办法]
帮你顶