【问题标题】:How to call a web service with a configurable URL如何使用可配置的 URL 调用 Web 服务
【发布时间】:2026-02-18 14:15:02
【问题描述】:

我写了一个网络服务。我写了一个网站。我希望网站 BLL 代码调用网络服务。

我有一个包含此服务 URL 的配置表。我将 Web 服务 URL 注入到调用代码中。我应该使用哪个 C# 中的 Web 客户端或套接字来接收动态 Web 服务 URL?

我想用:

WebClient webClient = new WebClient();
UTF8Encoding response = new UTF8Encoding();
string originalStr = response.GetString(webClient.DownloadData(BLLConfig.Current);

但也许还有更优雅的方式?

我在运行时从数据库表加载配置。

这是我尝试在 Visual Studio 中使用 Web 引用的方式:

using (var client = new GetTemplateParamSoapClient("GetTemplateParamSoap"))
{
    TemplateParamsKeyValue[] responsArray = client.GetTemplatesParamsPerId(CtId, tempalteIds.ToArray());

    foreach (var pair in responsArray)
    {
        string value = FetchTemplateValue(pair.Key, pair.Value);
        TemplateComponentsData.Add(pair.Key, value);
    }
}

【问题讨论】:

  • 当您说您从 db 表中加载配置时 - 您是指 Web 服务的不同 URL(然后查看我的答案并点击链接)还是不同的 WSDL(这些 Web 中的功能确实不同服务)?
  • @Yahia,只是网址。相同的 WSDL

标签: c# webclient


【解决方案1】:

您可以在 Visual Studio 中将 Web 服务的 URL 添加为 Web 引用,然后将 Service.URL 属性设置为配置中的值

【讨论】:

  • 不确定我知道怎么做,请在原始消息中查看我的代码。
  • 看起来它是作为“服务引用”而不是 Web 引用添加的,要添加“Web 引用”,请右键单击“服务引用”并单击“添加新服务引用”,然后单击“高级”按钮,然后单击“添加 Web 引用”
  • 使用 Web-Reference 还是 Service-reference 哪个更好?
  • 服务引用通过可自定义的绑定为您提供更多控制,但也增加了更多复杂性,当我使用 ASMX Web 服务时,我通常使用 Web 引用。
  • 我找不到:单击“添加 Web 引用”。我使用visual-studio 2010
【解决方案2】:

.NET 对使用 Web 服务有很多内置支持...在将服务引用添加到您的项目后,它会生成必要的代码...您可以按原样使用 - 如果您需要配置 URL生成的客户端类有一个 URL 属性,您可以对其进行相应设置...有关出色的演练,请参阅 http://johnwsaunders3.wordpress.com/2009/05/17/how-to-consume-a-web-service/SOAP xml client - using Visual Studio 2010 c# - how?

【讨论】:

    最近更新 更多