gpt4 book ai didi

.net - C# 中的动态 WSDL 实现

转载 作者:行者123 更新时间:2023-12-05 00:06:09 24 4
gpt4 key购买 nike

我对 .Net 中的网络服务比较陌生,所以如果这是一个新手问题,我深表歉意。

我找到了很多关于如何在 .Net 项目中实现 Web 服务的资源,但它们似乎都涉及公开方法的静态定义。虽然这可能适用于某些应用程序,但它不符合我的需求。

我想知道的是,有没有一种方法可以动态实现 WSDL 中公开的方法,例如 PHP SoapClient 的方式。可以?

最佳答案

WSDL 实际上只是帮助定义方法名称和参数,并为您(开发人员)屏蔽所有 HTTP header 。

听起来您想在运行时提供方法名称和参数。也许解决这个问题的方法是完全忘记 WSDL。进行您自己的 HTTP 调用。

  • 将您期望的方法和 SOAP 端点 URL 存储在 .config 中.在运行时,查找并循环遍历 Web 方法的参数列表,并提供值。
  • 使用 HttpWebRequest并根据需要添加标题。这是一个 article doing the same thing - Invoking Web Service dynamically using HttpWebRequest .

  • HttpWebRequest req = (HttpWebRequest)WebRequest.Create(
    "http://foo.com/Some.asmx"); //build string from .config instead.

    //here Register is the name of the method. take yours from config as well if needed
    req.Headers.Add("SOAPAction", "\"http://tempuri.org/Register\"");

    req.ContentType = "text/xml;charset=\"utf-8\"";
    req.Accept = "text/xml";
    req.Method = "POST";

    见文章 Invoking Web Service dynamically using HttpWebRequest详细信息。

    .NET 的 Web 服务包装器类的一般情况是,它们试图帮助强制执行服务器的 contracts与客户。显然,您试图避免更改静态类型的客户端,如 .NET 包装类所提供的那样。希望它对您来说维护起来不会太繁重。

    关于.net - C# 中的动态 WSDL 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3605165/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com