开箱即用的配置可以在我的机器上完美运行,完全没有问题。
但是当我部署到我们的测试环境时,我收到以下消息
500:{“消息”:“发生错误。” } / api / swagger / docs / v1
我想它与baseUrl或类似的东西有关,但我什至不知道从哪里开始。
我的路由在项目中运行良好-我可以调用所有的webapi端点,它们可以正确响应。
任何帮助将非常感激
Answers:
调试时,我使用的是调试配置(我为以下属性生成了XmlComments:属性->构建选项卡->输出-> XML文档文件)
我没有为发布配置执行此操作(duh ...)-现在一切正常
由于您在web.config中的customErrors设置,Swashbuckle隐藏了真正的错误消息。如果将customErrors设置为off,则应该获得更好的错误消息。
<system.web>
<customErrors mode="Off"/>
</system.web>
如接受答案中所述,您必须确保XML文档文件输出位于bin中,而不是bin \ Debug或bin \ Release中(请针对所有构建配置进行验证)。
由于使用多个XML文档文件,我仍然收到500响应。在我的SwaggerConfig实现中,我包括来自两个项目(WebApi项目本身和WebApi项目引用的类库)的XML文档文件:
c.IncludeXmlComments(string.Format(@"{0}\bin\MyWebApiProject.xml", System.AppDomain.CurrentDomain.BaseDirectory));
c.IncludeXmlComments(string.Format(@"{0}\bin\ReferencedProject.xml", System.AppDomain.CurrentDomain.BaseDirectory));
WebApi项目的XML文档文件已正确发布到站点的bin文件夹中,但是引用的项目的XML文档文件却没有发布(即使它出现在已编译项目的bin文件夹中)。
因此,您需要在文本编辑器中修改WebApi项目文件(.csproj),并在底部添加以下部分(替换ReferencedProject):
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\ReferencedProject\bin\ReferencedProject.xml" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
请参阅如何使用VS2010 Web部署程序包包含其他文件?以获得完整的解释。
Include=bin\*.xml
其中包含来自所有引用项目的xml,而无需明确指定它们。请参阅docs.microsoft.com/zh-cn/aspnet/web-forms/overview/deployment/…–