如何从 Visual Studio Webform 访问基于 ServiceStack 的 Web 服务

Posted

技术标签:

【中文标题】如何从 Visual Studio Webform 访问基于 ServiceStack 的 Web 服务【英文标题】:How to access ServiceStack based web service from visual studio webform 【发布时间】:2018-12-22 03:18:49 【问题描述】:

我无法理解如何使用现有的基于 ServiceStack 的 Web 服务 (https://cert.web.transaction.transactionexpress.com/TransFirst.Transaction.Web/api/)。我正在使用标准的 vstudio .net 4.6 aspnet 网站 c# 表单。

我尝试将base service uri 作为服务引用添加到我现有的项目(网站> 添加服务引用> URI),但在构建我的解决方案时我收到错误:[错误:无法为服务引用生成代码。无法导入 wsdl:portType...]。

我想我可以在不手动构建对象定义的情况下与该服务进行交互,所以我一定错过了一个步骤。

两个问题: 1. 有没有其他人使用过这个特定的服务?或者您能否建议如何从该服务生成对象定义? 2. 我是否错误地假设生成对象定义会在我的 httpclient 上为我提供完整的 VStudio 智能感知?

【问题讨论】:

【参考方案1】:

由于这是一个 ServiceStack Web 服务,您可以使用 C# Add ServiceStack Reference 在 C# 中生成类型化 API,您可以将其与 ServiceStack's C# Service Clients 一起使用。

此服务的BaseUrl 是:

https://cert.web.transaction.transactionexpress.com/TransFirst.Transaction.Web/api/

因此,如果您来自 VS.NET 扩展库install ServiceStack VS:

您可以通过单击项目中的添加 ServiceStack 引用来创建 Typed C# API:

然后您可以将 Typed DTO 与 ServiceStack 的通用服务客户端一起使用,例如:

var baseUrl = "https://cert.web.transaction.transactionexpress.com/TransFirst.Transaction.Web/api/";
var client = new JsonServiceClient(baseUrl);
var response = client.Post(new CreateCustomReport  ... );

【讨论】:

好的,感谢您的快速响应。我添加了 SS 引用,但生成的类有一系列错误,以“找不到类型或命名空间名称‘DataContractAttribute’(您是否缺少…)”、“找不到‘DataContract’…等. @MTAdmin 那是.NET [DataContract] Attribute,你需要add a reference to System.Runtime.Serialization.dll 好的,也许我越来越接近我应该问的问题了......VS(2015/2017)没有菜单选项可以在现有的 aspnet 站点中添加 SS 引用。我试图通过在我现有的解决方案中添加一个单独的 SS 项目来解决这个问题。将两个项目放在一个解决方案中会导致 VS 在生成的类文件中指示 DataContract 错误。那么 - 有没有办法将 SS 引用添加到现有的 aspnet 网站? @MTAdmin 我的回答显示了如何将 ServiceStack 引用添加到现有项目。我不知道您遇到了什么错误,但这听起来像是依赖冲突。您可以通过在项目中包含 TransFirst.Transaction.Web/api/types/csharp 源文件并手动添加对 ServiceStack.Client NuGet 包的引用来添加没有 UI 的引用。 添加静态类型源文件回答了我的问题。我想这引入了未来源更改破坏我的离线类型的可能性,但我现在可以忍受这个。感谢您的帮助!

以上是关于如何从 Visual Studio Webform 访问基于 ServiceStack 的 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 中(重新)启用实时 CSS 编辑?

如何将项目从 Visual C++ 6.0 转换为 Visual Studio Express 2010?

如何从命令行编译 Visual Studio 项目?

如何从 Visual Studio 调试输出窗口中读取文本

如何从 GitHub 操作中升级 Visual Studio 项目?

如何从 Visual Studio C# 使用 Office?