2

我编写了以下代码,但只有服务中的第一个方法出现在客户端,但其余两个没有:(

任何人指导我可能是什么问题?

服务接口:

[ServiceContract]
    public interface IService1
    {

       [OperationContract]
        claimantResponse SaveClaimant(claimant claimant);

        [OperationContract]
         claimantResponse RenewExpiry(claimantMin claimantMin);

        [OperationContract]
         claimantResponse getAccessCode(claimantMin claimantMin);
    }

服务实现:

 public class Service1 : IService1
    {


        public claimantResponse SaveClaimant(claimant claimant)
        {
            return new claimantBLL().SaveClaimant(claimant);
        }


        public claimantResponse RenewExpiry(claimantMin claimantMin)
        {
            return new claimantBLL().RenewExpiry(claimantMin);
        }

        public claimantResponse getAccessCode(claimantMin claimantMin)
        {
            return new claimantBLL().getAccessCode(claimantMin);
        }


    }

数据:

[DataMember]
public class claimantResponse 
    {
       private List<string> _ErrorMessage = new List<string>();

       [DataMember]
       public List<string> ErrorMessage
        {
            get { return _ErrorMessage; }
            set { _ErrorMessage = value; }
        }

       private List<int> _ErrorCode = new List<int>();

       [DataMember]
       public List<int> ErrorCode
       {
           get { return _ErrorCode; }
           set { _ErrorCode = value; }
       }

       [DataMember]
        public String FormStatus { get; set; }
       [DataMember]
        public DateTime ExaminationDate { get; set; }
       [DataMember]
        public String AccessCode { get; set; }
       [DataMember]
        public String Status { get; set; }
        [DataMember]
        public string temp2 { get; set; }
    }

运行服务

它显示了两个奇怪的方法 getdata 和 getdataobject 而不是我自己的方法.. :(

任何帮助,将不胜感激。

4

4 回答 4

2

您发布的代码将无法编译。由于类上的数据成员属性。

如果您然后按“仍然运行”(不记得确切的文本,但接近那个)。然后它将运行已编译的代码的最后一个版本。您看到的方法名称可能在您用于创建服务的原始模板中。

于 2013-03-07T22:44:47.933 回答
2

我通过简单地重新启动 Visual Studio 2012 解决了这个问题 :-)

我的问题是重命名方法和从接口中删除 OperationContract 属性并没有改变我在运行 WCF 测试客户端时看到的方法。我什至注释掉了一个方法,Visual Studio 为该方法运行了调试器!我重新启动了 Visual Studio,它恢复了正常。

于 2014-02-27T05:41:51.507 回答
1

我得到了这个问题的解决方案并在这里发布,所以可能会帮助其他任何有相同情况的人:

1) 从类和属性中删除 [DataMember] 属性。2)创建一个新的 WCF 简单服务并使用相同的代码。

我确实从旧服务中删除了 datamember 属性,但它不起作用,所以我认为我的服务已损坏,因为它没有显示新服务所做的任何新方法:(

3) web.cofig 从您创建 wcf 样本时起将保持不变,在这种情况下不需要更改。

谢谢!

于 2013-03-15T10:42:59.200 回答
1

所以我遇到了同样的问题,并且看不到任何添加的新方法,无论 Datacontract

您需要公开方法的第一件事是接口内方法上方的数据注释(属性)OperationContract,如下例所示:
[ServiceContract] public interface IService { [OperationContract] Student_Identification GetStudentIdentification(int StudentId); }

这是我的第一个问题,但我仍然看不到它,所以我决定在引用它的应用程序中更新我的服务引用

在此处输入图像描述

当我单击更新服务参考时,显示一条错误消息,指出无法连接到服务器。就我而言,该服务指向不同的服务器。但是我需要指向我的本地计算机,所以我点击了配置服务参考
在此处输入图像描述


我的问题是,客户端地址设置为不同的 url,而不是我的本地开发机器。我尝试使用服务正在使用的现有 url 在我的主机文件中添加一个主机条目,但这仍然没有解决我的问题。所以我继续打开 IIS,因为我在本地设置了这个项目。选择我的网站,右键单击并选择编辑绑定...
在此处输入图像描述


单击添加并在服务中添加 url 地址,不要忘记将其添加到您的主机文件中以防万一。通常位于此处 -> C:\Windows\System32\drivers\etc 在此处输入图像描述

返回引用服务的应用程序,右键单击服务引用并选择更新服务引用。这对我有用,希望这对他们的旅程有所帮助。

于 2018-01-05T22:58:47.623 回答