系统.ServiceModel.Web .NET Core

2024-01-18

我正在将 .NET Framework 应用程序移植到 .NET Core 中。我已通过 NuGet System.ServiceModel.Web 添加,但似乎不起作用。我需要“WebGet”的替代方案:

[ServiceContract]
public interface IChannelsApi
{
    [WebGet(UriTemplate = "", ResponseFormat = WebMessageFormat.Json), OperationContract]
    List<Channel> GetChannels();

    [WebGet(UriTemplate = "{name}", ResponseFormat = WebMessageFormat.Json), OperationContract]
    Channel GetChannel(string name);

}

我必须做什么?


正如 @Thomas 所指出的,WebGet 早已被用于创建 REST API 的更好的框架所取代。如果您还没有准备好,请在 VS2015 / VS2017 中创建一个新的 .Net Core Web Api 项目,运行它,然后看看它与旧的 WCF 方法有何不同。您会注意到需要的样板代码和装饰要少得多。Here's https://stackoverflow.com/a/9452105/2869344WCF 和 ASP.NET Web API 之间的一些差异的概述,.Net Core 实际上只是下一代。

下面是来自工作控制器类的一些代码的更全面的示例。如果需要,您可以将其抽象为接口,但是可能没有意义 https://stackoverflow.com/a/15411734/2869344。还要注意缺少[ServiceContract] and [OperationContract]装饰品等。只需指定[Route(...)](可选 - 如果控制器不符合默认路由),以及使用的方法和 Uri 路径[HttpGet(...)], etc.

此代码还假设了一些事情,例如向 DI 容器注册依赖项(ILogger and ICustomerRepository)。请注意,.Net Core 内置了依赖注入,这是一个很好的功能(快速概述 https://jonhilton.net/2016/11/17/start-using-dependency-injection-asp-net-core/).

最后我还推荐使用Swagger http://swagger.io/如果你还没有。我在这方面迟到了,但最近一直在使用它,它对 API 开发来说是一个福音(下面的广泛评论有助于使 Swagger 更有用):

    [Route("api/[controller]")]
    public class CustomersController : Controller
    {
        ILogger<CustomersController> log;
        ICustomerRepository customerRepository;

        public CustomersController(ILogger<CustomersController> log, ICustomerRepository customerRepository)
        {
            this.log = log;
            this.customerRepository = customerRepository;
        }

        /// <summary>
        /// Get a specific customer 
        /// </summary>
        /// <param name="customerId">The id of the Customer to get</param>
        /// <returns>A customer  with id matching the customerId param</returns>
        /// <response code="200">Returns the customer </response>
        /// <response code="404">If a customer  could not be found that matches the provided id</response>
        [HttpGet("{customerId:int}")]
        [ProducesResponseType(typeof(ApiResult<Customer>), 200)]
        [ProducesResponseType(typeof(ApiResult), 404)]
        public async Task<IActionResult> GetCustomer([FromRoute] int customerId)
        {
            try
            {
                return Ok(new ApiResult<Customer>(await customerRepository.GetCustomerAsync(customerId)));
            }
            catch (ResourceNotFoundException)
            {
                return NotFound(new ApiResult($"No record found matching id {customerId}"));
            }
        }
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统.ServiceModel.Web .NET Core 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • BASIC 中的 C 语言中的 PeekInt、PokeInt、Peek、Poke 等效项

    我想知道该命令的等效项是什么Peek and Poke 基本和其他变体 用 C 语言 类似PeekInt PokeInt 整数 涉及内存条的东西 我知道在 C 语言中有很多方法可以做到这一点 我正在尝试将基本程序移植到 C 语言 这只是使用
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • 将所有依赖项从 .Net Standard 库复制到 .Net Framework 控制台应用程序

    在 net Framework 4 6 控制台应用程序中使用 net 标准项目后 net 标准项目的依赖项不会复制到输出目录中 这会导致缺少 dll 的运行时错误 对于引用的项目 复制本地 属性已经成立 一种可能的解决方案是在控制台应用程序
  • 如何在 C# 中打开 Internet Explorer 属性窗口

    我正在开发一个 Windows 应用程序 我必须向用户提供一种通过打开 IE 设置窗口来更改代理设置的方法 Google Chrome 使用相同的方法 当您尝试更改 Chrome 中的代理设置时 它将打开 Internet Explorer
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 需要帮助优化算法 - 两百万以下所有素数的总和

    我正在尝试做一个欧拉计划 http projecteuler net问题 我正在寻找 2 000 000 以下所有素数的总和 这就是我所拥有的 int main int argc char argv unsigned long int su
  • 访问外部窗口句柄

    我当前正在处理的程序有问题 这是由于 vista Windows 7 中增强的安全性引起的 特别是 UIPI 它阻止完整性级别较低的窗口与较高完整性级别的窗口 对话 就我而言 我想告诉具有高完整性级别的窗口进入我们的应用程序 它在 XP 或
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • x:将 ViewModel 方法绑定到 DataTemplate 内的事件

    我基本上问同样的问题这个人 https stackoverflow com questions 10752448 binding to viewmodels property from a template 但在较新的背景下x Bind V
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 如何实例化 ODataQueryOptions

    我有一个工作 简化 ODataController用下面的方法 public class MyTypeController ODataController HttpGet EnableQuery ODataRoute myTypes pub
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • MySQL Connector C/C API - 使用特殊字符进行查询

    我是一个 C 程序 我有一个接受域名参数的函数 void db domains query char name 使用 mysql query 我测试数据库中是否存在域名 如果不是这种情况 我插入新域名 char query 400 spri

随机推荐

  • 永久关闭 Eclipse 中的拼写检查

    每次在 Eclipse 中创建新工作区时 我都必须通过首选项关闭拼写检查 首选项 gt 常规 gt 编辑器 gt 文本编辑器 gt 拼写 gt 启用拼写检查 这非常令人恼火 如何永久关闭拼写检查 IE 当我创建新工作区时 拼写检查器被禁用
  • Python 3:我们可以在调用实例的多个方法时避免重复实例名称吗?

    我现在 或者我已经读到 它在 Python 2 x 中是不可能的 并且在 Python 3 中也找不到它 但也许我不知道如何搜索它 用一个简单的 Python 示例更容易解释它 for i in range 11 one turtle pe
  • 代理后面的 PyQt + QtWebkit

    我正在编写一个 PyQt 功能强大的 Qt 库的 Python 绑定 应用程序 并且我的应用程序的一小部分需要 Web 浏览器 提示 OAuth 所以我开始使用 QtWebkit 顺便说一下 它非常棒 唯一的问题是我想允许代理后面的用户使用
  • C# 通过多级数组仅根据Key名称查找JSON值

    我有各种输入 JSON 格式的数据 它们都包含特定的键名terminalSize 这是我唯一知道的作品 JSON 树的总数或确切深度terminalSizeJSON 树内部将永远是未知的并且可能会发生变化 我正在寻找一个 C 解决方案来循环
  • 添加片段容器视图后 Android 膨胀布局崩溃

    目前我有一个扩展 AppCompatActivity 的自定义抽屉活动 如下所示 public class DrawerActivity extends AppCompatActivity implements NavigationView
  • Eclipse自动补全问题

    刚刚安装了 Eclipse Helios Win7 64 我遇到了一个奇怪的问题 我输入 syso Ctrl Space 预计会完成 System out println 但它不起作用 我在网上搜索了大约一个小时 我将 首选项 gt Jav
  • iPhone 故障保护多个文件下载

    我的应用程序正在从服务器下载图像包 它是来自 XML 的直接链接 20 50 个文件 的数组 如何确保整组图像已完全下载 如果使用 iPhone 按钮关闭应用程序 如何添加条件来取消整个下载 并删除所有已下载的文件 这些方法在 AppDel
  • RestTemplate getForObject 无法映射自定义类

    自定义类结构 DocumentListVO 与 JSON 响应一对一映射 但在使用时DocumentListVO dv1 restTemplate getForObject uri DocumentListVO class 它抛出以下堆栈跟
  • 在模拟器 GenyMotion 上加载 React Native 问题

    我正在使用本机反应 react native cli 2 0 1 react native 0 55 3 我正在通过react native run android 屏幕始终加载应用程序 调试器模式 注意 这是一个突然的问题 直到昨天为止都
  • 如何让 MD5 更安全?或者说真的有必要吗?

    我将用户名和密码存储在 MySQL 数据库中 并使用 MD5 对它们进行哈希处理 然而 我只使用标准的 PHP 函数 没有任何修改 现在 我读到 MD5 已损坏 你做得怎么样 您是否通过不同的哈希机制运行多次或添加某种形式的盐 我很惊讶人们
  • 如何在Bootstrap中保持三列之间的空间?

    我在 Stackoverflow 上做了很多关于如何有效解决这个问题的搜索 但我似乎仍然没有找到我正在寻找的东西 基本上 我有三列 我希望它们在页面上均匀分布并居中 然而 当我为所有三列设置 col md 4 时 最终结果是它们全部三列彼此
  • 使用Python删除目录中的所有文件

    我想删除所有具有扩展名的文件 bak在一个目录中 我怎样才能在Python中做到这一点 Via os listdir https docs python org 2 library os html os listdir and os rem
  • getObjectSummaries 能否获取存储在 S3 存储桶中的对象数量?

    我需要知道存储在下面的文件数量S3桶 现在 ObjectListing没有这样的方法count or numberOfObject 但是 它有一个方法将返回一个列表S3ObjectSummary public java util List
  • Intellij IDEA 不在构面列表中显示 Django

    我使用 Fedora 20 和 OpenJDK 1 7 0 60 设置 我可以成功设置并运行 Intellij IDEA 13 1 然后设置 Python 插件 好吧 当我尝试选择性地使用 Python 模块从 Intellij 生成项目时
  • 如何移动SVG在D3中的位置?

    我使用 D3 创建了一个 svg 然而 它只显示在屏幕的左上角 或者被附加到另一个 svg 中 我可以使用 JavaScript 移动它吗 例如 var svg d3 select body append svg attr width 20
  • 在 Linux 中正常构建的 C++ 程序在 VS2010 中编译失败

    我的 C 项目在 Linux 上构建并运行良好 现在我正在尝试在VS2010中编译它 我似乎从 cmath 库中收到许多错误 如下所示 Error 1 error C2061 syntax error identifier acosf c
  • Labview - 通过数组大小限制增加数组索引

    我正在使用labview XY线图 该图使用随机数生成器生成y值 并使用while循环计数生成x值 当达到阈值 x 值 例如 1000 时 我希望能够迭代过去的 1000 个值并仅每 10 个值显示一次 这具有整理绘图的效果 理想情况下 实
  • 如何在 Rust 中计算 21 的阶乘?

    我需要在我的项目中计算 21 的阶乘 fn factorial num u64 gt u64 match num 0 gt 1 1 gt 1 gt factorial num 1 num fn main let x factorial 21
  • 数组中实际上是空白列?

    我在 Google 表格中使用这个公式 SORT SORT Discord D B2 B Discord D A2 A ARRAYFORMULA IF Discord D G2 G IF Discord D C2 C lt gt Remov
  • 系统.ServiceModel.Web .NET Core

    我正在将 NET Framework 应用程序移植到 NET Core 中 我已通过 NuGet System ServiceModel Web 添加 但似乎不起作用 我需要 WebGet 的替代方案 ServiceContract pub