我最近注意到,使用服务引用(WCF)会导致普通的旧SOAP API出现问题。我认为更新更好的方法是使用服务引用,因为WCF更灵活,更现代。谁能检测到如何在VS2013中使用WCF进行这项工作?

这是一个尝试使用RxNav(免费)API的简单控制台应用程序

URL: http://mor.nlm.nih.gov/axis/services/RxNormDBService


在向解决方案添加“服务参考”之后,我输入了以下代码:

Program.cs

static void Main(string[] args)
{
    var client = new RxNavAPI.DBManagerClient();

    try
    {
        var matches = client.getDrugs("aspirin");

        foreach (var conceptGroup in matches)
        {
            foreach (var concept in conceptGroup.rxConcept)
            {
                Console.WriteLine(String.Format("Name: {0}, Syn: {1}", concept.STR, concept.SY));
            }
        }

        client.close();
    }
    catch (TimeoutException ex)
    {
        Console.WriteLine("Timeout occurred while accessing RxNav API");
        Console.WriteLine(ex.Message);
        throw;
    }
}


App.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="RxNormDBServiceSoapBinding" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://mor.nlm.nih.gov/axis/services/RxNormDBService"
                binding="basicHttpBinding" bindingConfiguration="RxNormDBServiceSoapBinding"
                contract="RxNavAPI.DBManager" name="RxNormDBService" />
        </client>
    </system.serviceModel>
</configuration>


我注意到的一件事是,将客户端添加为Web引用后,其名称如下:

var client = new RxNavAPI.DBManagerService();


而在使用服务参考时,它就像:

var client = new RxNavAPI.DBManagerClient();


编辑:我收到的错误是


  System.InvalidOperationException:“ RPC消息
  getProprietaryInformationRequest1正在运行
  getProprietaryInformation1的正文名称无效
  getProprietaryInformation。它必须是getProprietaryInformation1“

最佳答案

太棒了!
 @约翰·桑德斯到处都有答案。
这与5年前的问题相同。 WCF: Svcutil generates invalid client proxy, Apache AXIS Web Service, overload operations

现在,我遇到了同样的问题,仍然没有修复,只有解决方法。

关于c# - 对,什么是Web引用(ASMX)应该用作服务引用(WCF),正确吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21634153/

10-12 12:37
查看更多