【发布时间】:2013-12-06 22:00:59
【问题描述】:
我想使用数据库中的网络服务来收集信息。现在,我实现了 Web 服务,通过 wsdl.exe 把它变成了一个代理类,但我对结果有点恼火。调用该类的正常方式是新对象 -> 方法 -> 参数 -> 幸福。这个东西只包含部分类并且需要奇怪的参数。我什至不确定我是否有正确的方法来获取想要的信息。
这似乎是需要的方法:
public UniProtId2DomainIdsRecordType[] UniProtId2DomainIds (UniProtId2DomainIdsRequestRecordType UniProtId2DomainIdsRequestRecord)
{
object[] results = this.Invoke("UniProtId2DomainIds", new object[] {
UniProtId2DomainIdsRequestRecord});
return ((UniProtId2DomainIdsRecordType[])(results[0]));
}
这似乎是需要的类之一:
public partial class UniProtId2DomainIdsRequestRecordType
{
private string uniprot_accField;
/// <remarks/>
public string uniprot_acc
{
get
{
return this.uniprot_accField;
}
set
{
this.uniprot_accField = value;
}
}
}
(这是整个类,由wsdl.exe生成->https://www.dropbox.com/s/yg909ibdq02js5a/GetCath.cs)
但是一旦我尝试使用它,我认为它应该可以工作......好吧......我对此的实验(没有一个工作):
UniProtId2DomainIdsRequestRecordType Uni2Cath = new UniProtId2DomainIdsRequestRecordType();
Uni2Cath.uniprot_acc = "P0A7N9";
UniProtId2DomainIdsRecordType[] UniProtId2DomainIds;
UniProtId2DomainIdsRecordType test = new UniProtId2DomainIdsRecordType();
test.uniprot_acc = "P0A7N9";
UniProtId2DomainIdsRecordType[] UniProtId2DomainIds(test);
我只需要获取一个像 P0A7N9 这样的字符串来传递给服务器。
(对该网络服务的引用:http://api.cathdb.info/api/soap/dataservices/wsdl#op.o159501052)
谁能告诉我如何处理这个问题,好吗?
【问题讨论】:
-
ASMX 是一项遗留技术,不应用于新开发。 WCF 或 ASP.NET Web API 应该用于 Web 服务客户端和服务器的所有新开发。一个提示:Microsoft 已停用 MSDN 上的 ASMX Forum。
-
很高兴提及,但这并没有改变我需要使用的数据库具有它们的格式这一事实。顺便说一句,我从来没有提到过使用 ASMX,我也没有将它添加到标签中。我不在 asp.net 中编码,它是纯 C# 并且所寻址的服务是 SOAP over HTTP。
-
WSDL.EXE 是 ASMX 技术的一部分。
标签: c# soap wsdl asmx proxy-classes