开箱即用的配置在我的机器上完美运行,完全没有问题。
但是当我部署到我们的测试环境时 - 我收到以下消息
500 : { "Message": "发生错误。" } /api/swagger/docs/v1
我猜它与 baseUrl 或类似的东西有关,但我什至不知道从哪里开始。
我的路由在项目中运行良好——我可以调用我所有的 webapi 端点并且它们响应正确。
任何帮助将非常感激
开箱即用的配置在我的机器上完美运行,完全没有问题。
但是当我部署到我们的测试环境时 - 我收到以下消息
500 : { "Message": "发生错误。" } /api/swagger/docs/v1
我猜它与 baseUrl 或类似的东西有关,但我什至不知道从哪里开始。
我的路由在项目中运行良好——我可以调用我所有的 webapi 端点并且它们响应正确。
任何帮助将非常感激
调试时,我使用的是调试配置(我为以下内容生成了 XmlComments:属性 -> 构建选项卡 -> 输出 -> XML 文档文件)
我没有为我的发布配置做这个(呃......) - 现在一切正常
由于您在 web.config 中的 customErrors 设置,Swashbuckle 隐藏了真正的错误消息。如果您将 customErrors 设置为 off,您应该会收到更好的错误消息。
<system.web>
<customErrors mode="Off"/>
</system.web>
如已接受的答案中所述,您必须确保 XML 文档文件输出位于bin而不是bin\Debug或bin\Release(验证所有构建配置)。
我仍然收到 500 响应,因为我使用了多个 XML 文档文件。在我的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 部署包包含其他文件?以获得完整的解释。
接受的答案应该是您尝试的第一件事。
但是,我将 XML 输出设置为转到 App_Data\ 并将我的 Swashbuckle 配置为从该目录读取,因此,它的构建方式无关紧要:xml 文件将“存在”。尽管如此,我仍然收到错误...
我在MSDN 的论坛上找到了@enough2012 的答案:
在“发布”对话框的“设置”窗格中的“文件发布选项”中选择“在目标位置删除其他文件”。
像魅力一样工作!