Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用自动生成的代理类?_C#_Soap_Wsdl_Asmx_Proxy Classes - Fatal编程技术网

C# 如何使用自动生成的代理类?

C# 如何使用自动生成的代理类?,c#,soap,wsdl,asmx,proxy-classes,C#,Soap,Wsdl,Asmx,Proxy Classes,我想使用数据库中的web服务来收集信息。现在,我实现了web服务,通过wsdl.exe将其转换为代理类,但我对结果有点恼火。调用该类的常规方法是new object->method->parameters->happiness。这个东西只包含部分类,需要奇怪的参数。我甚至不确定我是否有获得想要的信息的正确方法 这似乎是必要的方法: public UniProtId2DomainIdsRecordType[] UniProtId2DomainIds (UniProtId2DomainIdsRe

我想使用数据库中的web服务来收集信息。现在,我实现了web服务,通过wsdl.exe将其转换为代理类,但我对结果有点恼火。调用该类的常规方法是new object->method->parameters->happiness。这个东西只包含部分类,需要奇怪的参数。我甚至不确定我是否有获得想要的信息的正确方法

这似乎是必要的方法:

public UniProtId2DomainIdsRecordType[] UniProtId2DomainIds   (UniProtId2DomainIdsRequestRecordType UniProtId2DomainIdsRequestRecord)
{
    object[] results = this.Invoke("UniProtId2DomainIds", new object[] {
                UniProtId2DomainIdsRequestRecord});
    return ((UniProtId2DomainIdsRecordType[])(results[0]));
}
这似乎是所需的课程之一:

public partial class UniProtId2DomainIdsRequestRecordType
{

我所需要的就是获得一个像P0A7N9这样的字符串,并将其传递给服务器

(对此Web服务的引用:)


有人能告诉我如何处理这个问题吗?

最简单的方法是将此web服务添加到您的项目中。然后您可以调用不同的方法。使用此地址:

如果要使用生成的类,请执行以下操作:

using (var service = new DataServices())
{
    var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
    {
        uniprot_acc = "P0A7N9"
    });

    if (results != null && results.Length >0)
    {
        var geneName = results[0].gene_name;
        var speciesName = results[0].species_name;
    }
}

正如John在评论中所建议的,ASMX和wsdl.exe是不推荐使用的技术。您应该使用服务引用,最简单的方法是将此web服务添加到您的项目中。然后您可以调用不同的方法。使用此地址:

如果要使用生成的类,请执行以下操作:

using (var service = new DataServices())
{
    var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
    {
        uniprot_acc = "P0A7N9"
    });

    if (results != null && results.Length >0)
    {
        var geneName = results[0].gene_name;
        var speciesName = results[0].species_name;
    }
}

正如John在评论中所建议的,ASMX和wsdl.exe是不推荐使用的技术。您应该使用服务引用和

,这可能会起作用,但我如何得到答案?它是一个由六个字符串组成的数组。我真的很想知道,如果我想使用uniprot to cath以外的其他方法,如何使用生成的类。我更新用一些想法解释了答案。生成的Web引用包含服务公开的所有方法,您将能够使用它们。Web引用生成与wsdl.exe相同的类,这更好,因为您让VS来处理它,而不是命令行。-1用于建议Web引用而不是服务引用。服务引用更有意义。出于某种原因,我认为这是ASMX服务。即将进行更新。实现了下面的代码,效果非常好。感谢您的努力。:)这可能会奏效,但我如何得到答案?它是一个由六个字符串组成的数组。我真的很想知道如何使用生成的类,以防我想使用其他m我用一些想法更新了答案。生成的Web引用包含服务公开的所有方法,您将能够使用它们。Web引用生成与wsdl.exe相同的类,这只是更好,因为您让VS来处理它,而不是命令行。-1用于建议Web引用而不是s服务参考。服务参考更有意义。出于某种原因,我认为这是ASMX服务。更新即将到来。实现了下面的代码,它工作得非常完美。感谢您的努力。:)ASMX是一项遗留技术,不应用于新的开发。WCF或ASP.NET Web API应用于所有新的Web服务开发ce客户端和服务器。一个提示:微软已经退出了MSDN上的。很高兴你提到这一点,但这并没有改变我需要使用的数据库有其格式的事实。顺便说一句,我从来没有提到使用ASMX,也没有将其添加到标记中。我没有在asp.net中编码,它是纯C#和服务地址是SOAP over HTTP。WSDL.EXE是ASMX technology.ASMX是一项传统技术,不应用于新的开发。WCF或ASP.NET Web API应用于所有Web服务客户端和服务器的新开发。提示:Microsoft已退出MSDN上的。很高兴您提到,但这并没有改变我需要使用的数据库具有其格式的事实。顺便说一句,我从来没有这样做过提到使用ASMX,我也没有将其添加到标记中。我没有在asp.net中编写代码,它是纯C#的,服务地址是SOAP over HTTP。WSDL.EXE是ASMX技术的一部分。
using (var ser = new DataServicesPortTypeClient())
{
    var results = ser.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
    {
        uniprot_acc = "P0A7N9"
    });

    if (results != null)
    {
        var geneName = results.gene_name;
        var speciesName = results.species_name;
    }
}
using (var service = new DataServices())
{
    var results = service.UniProtId2DomainIds(new UniProtId2DomainIdsRequestRecordType
    {
        uniprot_acc = "P0A7N9"
    });

    if (results != null && results.Length >0)
    {
        var geneName = results[0].gene_name;
        var speciesName = results[0].species_name;
    }
}