无法将第二个参数传递给带有两个参数的 WCF 服务

Posted

技术标签:

【中文标题】无法将第二个参数传递给带有两个参数的 WCF 服务【英文标题】:Cannot pass the second parameter to the WCF service with two parameters 【发布时间】:2019-10-26 09:49:52 【问题描述】:

我是 WCF 服务应用程序的新手。我正在关注一个教程。如果用户名和密码匹配,我正在尝试传递用户名和密码并获取在该特定对象中返回的用户对象。

在我的 App_code 文件夹中,我有一个名为 Login.cs 的类

public class Login
    
        WindsForBusinessEntities001 newLogin = new WindsForBusinessEntities001();
        private string vusername;
        private string vpassword;

        public string UserName
        
            get  return vusername; 
            set  vusername = value; 
        
        public string Password
        
            get  return vpassword; 
            set  vpassword = value; 
        
        public string UserLogin()
        
            var login = (from mstUser in newLogin.mstUsers where mstUser.userName == vusername && mstUser.password == vpassword select mstUser).Count() > 0;
            if (login)
            
                return "1";
            
            else return "0";
        
    

这里我使用了一个实体框架模型对象。在此,我使用数据库中的匹配记录检查用户名和密码,如果该特定用户存在,则返回字符串 1。

以下代码段是我项目中的 Iservice1.cs 类。

[ServiceContract]
    public interface Iservice1
    
        [OperationContract]
        string  UserLogin(vlogin login);
    
    [DataContract]
    public class vlogin
    
        private string vusername;
        private string vpassword;
        [DataMember]
        public string UserName
        
            get
            
                return vusername;
            
            set
            
                vusername = value;
            
        
        public string Password
        
            get
            
                return vpassword;
            
            set
            
                vpassword = value;
            
        
    

这是我的 Service1.svc.cs 文件代码段。

公共类 Service1 : Iservice1 公共字符串 UserLogin(vlogin 登录) 登录 vlogin = new Login(); vlogin.UserName = 登录名.UserName; vlogin.Password = 登录名.Password; 返回 vlogin.UserLogin();

我在这里面临的问题是,当我尝试执行它时,它只接受我的用户名。它不接受我的密码。密码不能作为输入给出。它只接受一个输入。因此,在执行此操作时,它总是返回 0,因为它没有匹配的密码。

我在这里执行的错误步骤是什么? 我应该怎么做才能传递密码?

【问题讨论】:

【参考方案1】:

Password 不是[DataMemeber],每个属性都应该是DataContract 类的DataMember。 DataContract 将其定义为用于获取或设置数据的服务,因此 DataContract 的属性应为 DataMember

【讨论】:

以上是关于无法将第二个参数传递给带有两个参数的 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章

无法以 GET 类型的方法将字典作为参数传递给 WCF REST 服务

将参数传递给视图转换

从代理客户端将参数传递给 WCF 服务中心

在 Codeigniter 中,如何将第三个参数传递给回调(表单验证)?

将参数传递给方法总是在java中从左到右排序吗?

具有两个输入参数的 Pundit 策略