小编Ste*_*son的帖子

如何使用Swashbuckle在WebAPI上省略Swagger文档中的方法

我有一个C#ASP.NET WebAPI应用程序,其中包含使用Swashbuckle自动生成的API文档.我希望能够从文档中省略某些方法,但我似乎无法弄清楚如何告诉Swagger不要将它们包含在Swagger UI输出中.

我觉得它与添加模型或模式过滤器有关,但它不明显该做什么,文档似乎只提供了如何修改方法的输出的示例,而不是从输出中完全删除它.

提前致谢.

.net c# asp.net swagger

110
推荐指数
9
解决办法
5万
查看次数

在.NET中解析FIX协议消息的最有效方法是什么?

我遇到了这个非常相似的问题,但该问题被标记为QuickFIX(与我的问题无关),大多数答案都与QuickFIX相关.

我的问题更广泛.我正在寻找使用C#解析FIX协议消息最有效方法.作为背景,FIX消息由一系列由ASCII <SOH>字符(0x01)分隔的标记/值对组成.消息中的字段数是可变的.

示例消息可能如下所示:

8=FIX.4.2<SOH>9=175<SOH>35=D<SOH>49=BUY1<SOH>56=SELL1<SOH>34=2482<SOH>50=frg<SOH>
52=20100702-11:12:42<SOH>11=BS01000354924000<SOH>21=3<SOH>100=J<SOH>55=ILA SJ<SOH>
48=YY77<SOH>22=5<SOH>167=CS<SOH>207=J<SOH>54=1<SOH>60=20100702-11:12:42<SOH>
38=500<SOH>40=1<SOH>15=ZAR<SOH>59=0<SOH>10=230<SOH>
Run Code Online (Sandbox Code Playgroud)

对于每个字段,标记(整数)和值(对于我们的目的,字符串)由'='字符分隔.(每个标签的精确语义都在协议中定义,但这与这个问题没有特别密切关系.)

通常的情况是,在进行基本解析时,您只对来自FIX标头的少数特定标签感兴趣,而不是真正对每个可能的字段进行随机访问.我考虑的策略包括:

  • 使用String.Split,遍历每个元素并将标记放入Hashtable中的索引映射 - 如果需要,在某些时候提供对所有字段的完全随机访问

  • (轻微优化)使用String.Split,扫描数组中感兴趣的标签并将标记放入索引映射到另一个容器(不一定是Hashtable,因为它可能是相当少量的项目,并且在解析之前已知项目数)

  • 使用字段扫描消息字段String.IndexOf并在适当的结构中存储感兴趣的字段的偏移量和长度

关于前两个 - 虽然我的测量表明String.Split速度非常快,但根据文档,该方法为结果数组的每个元素分配一个新的String,如果您正在解析大量消息,它会产生大量垃圾.谁能看到更好的方法来解决.NET中的这个问题?

编辑:

我遗漏的三条重要信息:

  1. 标签在FIX消息中不一定是唯一的,即在某些情况下可能出现重复标签.

  2. 某些类型的FIX字段可以<SOH>在数据中包含"嵌入" - 这些标记被称为"数据"类型 - 字典列出了此类型的标记号.

  3. 最终的要求是能够编辑消息(特别是替换值).

.net finance fix-protocol

8
推荐指数
2
解决办法
8083
查看次数

如何在C#中将int转换为char []而不产生垃圾

毫无疑问,鉴于ToString()and 的可用性,这似乎是一个奇怪的请求,Convert.ToString()但是我需要将无符号整数(即UInt32)转换为其字符串表示形式,但是我需要将答案存储到中char[]

原因是我正在使用字符数组以提高效率,并且在将目标char[]初始化为对象创建时char[10](持有的字符串表示形式UInt32.MaxValue)的成员时,理论上应该可以进行转换而不会产生任何垃圾(通过我的意思是在托管堆中不生成任何临时对象。)

谁能看到实现这一目标的巧妙方法?

(如果有任何相关意义,我正在使用Framework 3.5SP1。)

.net c#

5
推荐指数
1
解决办法
6243
查看次数

由于缺少依赖项,.NET 应用程序测试在 GitHub Actions 上失败

我在 .NET 解决方案中有一组 .NET 6.0 项目,其中一个是测试数据提供程序。我正在使用LiteDB来存储测试数据记录。该解决方案在本地构建良好并成功完成所有测试。我已经使用 GitHub Actions 在 GitHub 上设置了标准 CI 构建管道;构建完成时没有出现任何问题,并且不依赖于测试数据库的测试运行良好

但是依赖于 LiteDb 数据库的测试无法运行,因为构建服务器在查找 LiteDb 程序集时似乎存在问题:

源“/home/runner/work/MyProject.Core/MyProject.Core/test/MyProject.Testing.Data/bin/Release/net6.0/MyProject.Testing.Data.dll”的测试主机进程退出并出现错误:错误:找不到应用程序依赖项清单 (MyProject.Testing.Data.deps.json) 中指定的程序集:包:'LiteDB',版本:'5.0.16' 路径:'lib/netstandard2.0/LiteDB。 DLL'

大多数具有类似错误消息的文章都与 ASP.NET Core 相关,例如,未找到应用程序依赖项清单 (...) 中指定的程序集,但抓住了救命稻草,我尝试将以下内容添加到测试数据项目中:

<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
Run Code Online (Sandbox Code Playgroud)

这没有什么区别。另一个SO答案(How do I get .NET Core items to copy NuGetreferences to the buildoutput?)建议将以下内容添加到.csproj:

<CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
Run Code Online (Sandbox Code Playgroud)

这解决了缺少的依赖项,但引入了一个新的依赖项:

源“/home/runner/work/MyProject/MyProject/test/MyProject.Testing.Data/bin/Release/net6.0/MyProject.Testing.Data.dll”的测试主机进程退出并出现错误:错误:An找不到应用程序依赖项清单 (testhost.deps.json) 中指定的程序集:包:'Microsoft.TestPlatform.CommunicationUtilities',版本:'15.0.0.0' 路径:'Microsoft.TestPlatform.CommunicationUtilities.dll'

(当然,我尝试添加 Microsoft.TestPlatform 作为依赖项,但这没有任何区别。)

为了完整起见,我确认 Linux 上支持 LiteDb,因为 GitHub Actions 服务在 Ubuntu 上运行 - 看起来那里没有任何问题。应用程序和所有程序集(和测试)都以 .NET 6.0 为目标,并且所有项目都设置为构建 AnyCPU。这是我的ci.yml文件,如果有帮助的话:

name: …
Run Code Online (Sandbox Code Playgroud)

c# .net-core github-actions

5
推荐指数
1
解决办法
1234
查看次数

{0}在PHP语句中的含义是什么?

Apols如果之前有人询问过.我正在使用其他人的PHP代码并遇到以下行:

if($_GET['file']{0}=='.') die('Wrong file!');
Run Code Online (Sandbox Code Playgroud)

if,$ _GET和die我明白了,但$ _GET ['file']之后{0}的含义是什么?我查看了很多教程,但没有得到答案.

TIA.

php

3
推荐指数
2
解决办法
546
查看次数

如何最好地将Azure Devops发布管道与微服务结合使用?

我正在将微服务ci / cd管道从teamcity + octopus设置迁移到Azure Devops。

我们目前有:

  • 每个服务和网站都有多个存储库。
  • 一个Teamcity ci构建,将为每个构建触发一个章鱼部署。
  • 经过一整夜计划的一组集成测试将测试整个平台,如果它们成功了,那么所有开发服务都将升级到我们的夜间环境。
  • 从每晚->产品手动触发促销所有服务。

我正在尝试在天蓝色的开发人员中执行类似的操作,但是使用门和一些自定义搜索打开的bug来阻止部署的共同推广许多服务/组件的概念似乎很困难并且有点难看。

有谁能建议我要达到的最佳实践?我是否应该有一个单一的发布管道来从所有存储库中提取所有工件?

azure-devops

2
推荐指数
1
解决办法
1024
查看次数