【问题标题】:Can I use the c# rest library to call a web service?我可以使用 c# rest 库来调用 web 服务吗?
【发布时间】:2019-07-11 18:46:10
【问题描述】:

我可以使用 C# REST 库来进行这些 Web 服务调用,而不是像下面那样发现 Web 服务吗?

我们正在调用的网络服务的例子

https://trustonline.delawarecpf.com/tows/webservicefk.svc

问题是,我们为每个 Web 服务都有一个 .cs 文件,其中包含几乎所有相同的代码来调用 Web 服务和获取/添加/编辑数据。唯一的区别是每个文件引用的 Web 服务不同。

例如。在每个文件中,我们都像这样访问一个用户

var user = new User();

用户在哪里

ServiceReferenceFK.User() // from the FK service reference

ServiceReferenceAB.User() // from the AB service reference

但我宁愿使用 REST 库来获取/编辑/添加/删除数据,以消除所有冗余文件。并将所有服务移至单个文件。

目前我们在项目下的解决方案资源管理器中执行此操作

然后我们添加如下所示的服务引用并点击发现。 VS 找到 url 并获取我们所有要使用的代码。

【问题讨论】:

  • 这不是一项宁静的服务。那是 SOAP。
  • 什么是“REST 库”?
  • 可以使用带有 SOAP 服务的 Restsharp 吗?大概。但我不会推荐它。
  • 嗨,艾米。我只是想弄清楚如何消除我们调用的所有“SOAP”Web 服务的冗余。每个都来自同一个供应商(例如相同的方法、道具、类等),但我们的项目有 12 个 .cs 文件,每个文件都有相同的调用,每个文件中的每个调用都指向不同的 Web 服务引用。跨度>

标签: c# asp.net rest web-services restful-url


【解决方案1】:

您可以使用抽象基类。要使其工作,您的抽象类必须是 [serializable][Datacontract] 否则它将无法将类公开给客户端,例如

[DataContract]
public abstract class MyBase
{
    [DataMember]
    public abstract int DoAdd { get; set; }

    public void MyOtherFunc()
    {
        Console.WriteLine("Done");
    }

}
[DataContract]
public class MyWCF : MyBase
{
    int a;
    [DataMember]
    public override int DoAdd
    {
        get { return a; }
        set { a = value; }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    相关资源
    最近更新 更多