在WCF中使用静态类

时间:2017-04-27 04:20:49

标签: c# wcf static

//that access to layer dataaccess. this uses another webapp
public class UsuariosService: IUsuariosService
{
    IUsuarioRepository _repoUsuarios;
    public UsuariosService(IUsuarioRepository repoUsuarios)
    {
        _repoUsuarios = repoUsuarios;
    }
    public UsuariosModel GetUsuarioByUsernameOrEmail(string data)
    {
        var usuario = new UsuariosModel();
        try
        {
            var usr = _repoUsuarios.GetFiltered(x => x.Login.Trim().Equals(data.Trim(),StringComparison.OrdinalIgnoreCase)||x.Email.Trim().Equals(data.Trim(),StringComparison.OrdinalIgnoreCase)).SingleOrDefault();
            if (usr == null)
            {
                return null;
            }
            else
            {
                usuario.Intentos = usr.Intentos;
                usuario.Email = usr.Email;
                usuario.Login = usr.Login;
                usuario.Nombre = usr.Nombre;                
            }
        }
        catch (Exception ex)
        {

        }
        return usuario;
    }
}

//this is my bussiness layer for WCf
public class UsuariosBO
{
    private static IUsuariosService _usuariosService;
    private UsuariosBO(IUsuariosService usuariosService)
    {
        _usuariosService = usuariosService;
    }

    public static UsuariosModel GetUsuarioByUsernameOrEmail(string data)
    {
        UsuariosModel usuario = new UsuariosModel();
        try
        {
            usuario = _usuariosService.GetUsuarioByUsernameOrEmail(data);

        }
        catch (Exception ex)
        {

        }
        return usuario;

    }
}

//this is my contract layer
public class UsuariosOPContract : IUsuariosOPContract
{
    public UsuarioContract GetUsuarioByUsernameOrEmail(string data)
    {
        UsuarioContract usuario = new UsuarioContract();
        try
        {
            UsuariosModel usr = UsuariosBO.GetUsuarioByUsernameOrEmail(data);
            usuario.Nombre = usr.Nombre;
            return usuario;
        }
        catch (Exception ex)
        {

        }
    }
}

[ServiceContract]
public interface IUsuariosOPContract
{
    [OperationContract]
    string GetUsuarioByUsernameOrEmail(string data);

}

当我运行该服务时,我收到错误

  

服务器堆栈跟踪:en   System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(消息   回复,MessageFault错误,字符串操作,MessageVersion版本,   FaultConverter faultConverter)en   System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime   操作,ProxyRpc& rpc)en   System.ServiceModel.Channels.ServiceChannel.Call(String action,   Boolean oneway,ProxyOperationRuntime操作,Object [] ins,   对象[]出局,TimeSpan超时)en   System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage   methodCall,ProxyOperationRuntime operation)en   System.ServiceModel.Channels.ServiceChannelProxy.Invoke(即时聊天   消息)

     

在[0]处重新抛出异常:en   System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(即时聊天   reqMsg,IMessage retMsg)en   System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData&安培;   msgData,Int32 type)en   IUsuariosOPContract.GetUsuarioByUsernameOrEmail(String data)en   UsuariosOPContractClient.GetUsuarioByUsernameOrEmail(String data)

0 个答案:

没有答案