我有一个C#ASP.NET WebAPI应用程序,其中包含使用Swashbuckle自动生成的API文档.我希望能够从文档中省略某些方法,但我似乎无法弄清楚如何告诉Swagger不要将它们包含在Swagger UI输出中.
我觉得它与添加模型或模式过滤器有关,但它不明显该做什么,文档似乎只提供了如何修改方法的输出的示例,而不是从输出中完全删除它.
提前致谢.
我遇到了这个非常相似的问题,但该问题被标记为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中的这个问题?
编辑:
我遗漏的三条重要信息:
标签在FIX消息中不一定是唯一的,即在某些情况下可能出现重复标签.
某些类型的FIX字段可以<SOH>在数据中包含"嵌入" - 这些标记被称为"数据"类型 - 字典列出了此类型的标记号.
最终的要求是能够编辑消息(特别是替换值).
毫无疑问,鉴于ToString()and 的可用性,这似乎是一个奇怪的请求,Convert.ToString()但是我需要将无符号整数(即UInt32)转换为其字符串表示形式,但是我需要将答案存储到中char[]。
原因是我正在使用字符数组以提高效率,并且在将目标char[]初始化为对象创建时char[10](持有的字符串表示形式UInt32.MaxValue)的成员时,理论上应该可以进行转换而不会产生任何垃圾(通过我的意思是在托管堆中不生成任何临时对象。)
谁能看到实现这一目标的巧妙方法?
(如果有任何相关意义,我正在使用Framework 3.5SP1。)
我在 .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) Apols如果之前有人询问过.我正在使用其他人的PHP代码并遇到以下行:
if($_GET['file']{0}=='.') die('Wrong file!');
Run Code Online (Sandbox Code Playgroud)
if,$ _GET和die我明白了,但$ _GET ['file']之后{0}的含义是什么?我查看了很多教程,但没有得到答案.
TIA.
我正在将微服务ci / cd管道从teamcity + octopus设置迁移到Azure Devops。
我们目前有:
我正在尝试在天蓝色的开发人员中执行类似的操作,但是使用门和一些自定义搜索打开的bug来阻止部署的共同推广许多服务/组件的概念似乎很困难并且有点难看。
有谁能建议我要达到的最佳实践?我是否应该有一个单一的发布管道来从所有存储库中提取所有工件?
.net ×3
c# ×3
.net-core ×1
asp.net ×1
azure-devops ×1
finance ×1
fix-protocol ×1
php ×1
swagger ×1