我已经编写了以下代码,但只有第一个服务方法出现在客户端,但其余两个不出现:(
任何人都会指导我可能出现什么问题?
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; }
}
它显示了两个奇怪的方法getdata和getdataobject而不是我自己的方法.. :(
任何帮助都将不胜感激。
答案 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);
}
这是我的第一个问题,但我仍然无法看到它,所以我决定在应用程序中更新我的服务参考
当我单击“更新服务引用”时,会显示一条错误消息,指出它无法连接到服务器。就我而言,该服务指向不同的服务器。但我需要指向我的本地计算机,所以我点击了“配置服务参考”
有我的问题,客户端地址设置为不同的URL而不是我的本地开发机器。我尝试在我的主机文件中添加一个主机条目,其中包含服务正在使用的现有网址,但仍然无法解决我的问题。所以我继续打开IIS,因为我在本地设置了这个项目。选择我的网站,右键单击并选择编辑绑定...
单击添加并在服务中添加URL地址,不要忘记将其添加到您的主机文件以防万一。通常位于此处 - &gt; C:\ WINDOWS \ SYSTEM32 \ drivers \ etc中
返回引用该服务的应用程序,右键单击服务引用并选择更新服务引用。这对我有用,希望这有助于他们的旅程。