WCF服务未显示我的功能

时间:2013-03-07 10:47:24

标签: wcf web-services asp.net-4.0

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

任何人都会指导我可能出现什么问题?

serviceInterface等

[ServiceContract]
    public interface IService1
    {

       [OperationContract]
        claimantResponse SaveClaimant(claimant claimant);

        [OperationContract]
         claimantResponse RenewExpiry(claimantMin claimantMin);

        [OperationContract]
         claimantResponse getAccessCode(claimantMin claimantMin);
    }

ServiceImplementation:

 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; }
    }

running service

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

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我得到了解决这个问题的方法并在此处发布,因此可能会帮助任何其他身体相同的情况:

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

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

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

谢谢!

答案 2 :(得分:1)

我只需重新启动Visual Studio 2012即可解决此问题: - )

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

答案 3 :(得分:1)

所以我遇到了同样的问题,无论Datacontract

如何都无法看到任何新方法

你需要暴露你的方法的第一件事就是Data Annotation(属性)OperationContract在你的方法上面的界面如下例所示:
[ServiceContract] public interface IService { [OperationContract] Student_Identification GetStudentIdentification(int StudentId); }

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

enter image description here

当我单击“更新服务引用”时,会显示一条错误消息,指出它无法连接到服务器。就我而言,该服务指向不同的服务器。但我需要指向我的本地计算机,所以我点击了“配置服务参考”
enter image description here


有我的问题,客户端地址设置为不同的URL而不是我的本地开发机器。我尝试在我的主机文件中添加一个主机条目,其中包含服务正在使用的现有网址,但仍然无法解决我的问题。所以我继续打开IIS,因为我在本地设置了这个项目。选择我的网站,右键单击并选择编辑绑定...
enter image description here


单击添加并在服务中添加URL地址,不要忘记将其添加到您的主机文件以防万一。通常位于此处 - &gt; C:\ WINDOWS \ SYSTEM32 \ drivers \ etc中 enter image description here

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