建立WCF CRUD运营项目时遇到的问题

问题描述

联系方式:

这是我与Crud Operation合同的合同界面。

[ServiceContract]
public interface IWcfCrudServices
{
    [OperationContract]
    Object addEmployee(Employees employee);
    [OperationContract]
    object getAllEmployees();
    [OperationContract]
    Object updateEmployee(Employees employee);
    [OperationContract]
    object deleteEmployee(Employees employee);
}

逻辑 具有逻辑基础方法的类,也许我在这里做错了什么?模型工作正常。

public class WcfCrudService : IWcfCrudServices
{
    norTHWNDContext ctx = new norTHWNDContext();
    public Object  addEmployee(Employees employee)
    {
        ctx.Employees.Add(employee);
        ctx.SaveChanges();
        return ctx.Employees;
    }

    public object deleteEmployee(Employees employee)
    {
        Employees employeeForDelete = ctx.Employees.Find(employee.EmployeeId);
        if (employeeForDelete != null)
        {

            ctx.Employees.Remove(employeeForDelete);
            ctx.SaveChanges();

        }
        return ctx.Employees;

    }

    public object getAllEmployees()
    {
        return ctx.Employees;
    }

    public object updateEmployee(Employees employee)
    {
        Employees employeeForUpdate = ctx.Employees.Find(employee.EmployeeId);
        if ( employeeForUpdate !=null)
        {
            
            employeeForUpdate.FirstName = employee.FirstName;
            employeeForUpdate.LastName = employee.LastName;
            employeeForUpdate.Country = employee.Country;
            employeeForUpdate.City = employee.City;
            employeeForUpdate.Address = employee.Address;

        }
        return ctx.Employees;
        
    }
}

}

主机 主持人工作得很好,我确定这里没有问题。

class Program
{
    static void Main(string[] args)
    {
        Uri baseHttpUrl = new Uri("http://localhost:8090/MyServices");
        using (ServiceHost serviceHost = new ServiceHost(typeof(MyServices.WcfCrudService),baseHttpUrl))
        {
            serviceHost.AddServiceEndpoint(typeof(MyServices.IWcfCrudServices),new BasicHttpBinding(),"CrudAssig");
            serviceHost.open();
            Console.WriteLine("The service is ready.");
            Console.WriteLine("Service name: "+serviceHost.Description.Name);
            Console.WriteLine("Press <ENTER> to terminate the service!");
            Console.ReadLine();
        }
    }
}

客户 我的方法无济于事。

class Program
{
    static void Main(string[] args)
    {
        Uri endpointAdress = new Uri("http://localhost:8090/MyServices/CrudAssig");
        EndpointAddress endpoint = new EndpointAddress(endpointAdress);
        IWcfCrudServices proxy = ChannelFactory<IWcfCrudServices>.CreateChannel(new BasicHttpBinding(),endpoint);     
    }
}

下一步该怎么做?我是在逻辑上还是在客户身上弄错了?我正在尝试从服务中调用用于CRUD操作的方法,但是它只是无法正常工作。


解决方法

您可以通过服务引用方式调用wcf服务,以检测服务器是否有错误。您可以先发布服务器的元数据,然后添加服务引用,然后通过服务引用调用服务器。

您可以查看此演示以将元数据添加到您的服务中:

<configuration> 

  <system.serviceModel> 

    <services> 

      <service name="Metadata.Example.SimpleService"> 

        <endpoint address="" 

                  binding="basicHttpBinding" 

                  contract="Metadata.Example.ISimpleService" /> 

      </service> 

    </services> 

    <behaviors> 

  

    </behaviors>  

  </system.serviceModel> 

</configuration> 

您也可以参考此链接:

How to: Publish Metadata for a Service Using a Configuration File

通过服务引用调用服务可以检查服务器端是否存在错误。如果服务调用没有问题,则代码的逻辑可能是错误的。