83

开箱即用的配置在我的机器上完美运行,完全没有问题。

但是当我部署到我们的测试环境时 - 我收到以下消息

500 : { "Message": "发生错误。" } /api/swagger/docs/v1

在此处输入图像描述 部署是为了default web site/api

我猜它与 baseUrl 或类似的东西有关,但我什至不知道从哪里开始。

我的路由在项目中运行良好——我可以调用我所有的 webapi 端点并且它们响应正确。

任何帮助将非常感激

4

6 回答 6

176

调试时,我使用的是调试配置(我为以下内容生成了 XmlComments:属性 -> 构建选项卡 -> 输出 -> XML 文档文件)

我没有为我的发布配置做这个(呃......) - 现在一切正常

于 2015-11-25T12:41:27.910 回答
26

谢谢@VisualBean。

因为它对我来说不是那么明显......如何......一个简单的图像。

在项目 > 您的项目属性 > 构建选项卡中

在此处输入图像描述

于 2019-08-22T06:13:27.837 回答
15

由于您在 web.config 中的 customErrors 设置,Swashbuckle 隐藏了真正的错误消息。如果您将 customErrors 设置为 off,您应该会收到更好的错误消息。

<system.web>
    <customErrors mode="Off"/>
</system.web>
于 2016-08-30T23:59:29.340 回答
3

如已接受的答案中所述,您必须确保 XML 文档文件输出位于bin而不是bin\Debugbin\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 部署包包含其他文件?以获得完整的解释。

于 2017-11-12T19:28:08.163 回答
0

问题是运行dotnet publishwith-r Release不会生成 XML 文件。但是,dotnet publishwith-r Debug实际上会生成文件。这解释了为什么人们只有在部署到本地环境以外的环境时才会遇到这个问题,然后当发现异常只发生在产品上时才会踢自己。(它的发布)为了reporoduce,只需在本地运行这些命令并查看输出目录,您应该会看到问题。

(更新)对我来说,解决方法是实际进入 .csproj 文件并添加一行以确保始终复制该文件。差异如下图 在此处输入图像描述

于 2017-06-23T21:53:34.777 回答
0

接受的答案应该是您尝试的第一件事。

但是,我将 XML 输出设置为转到 App_Data\ 并将我的 Swashbuckle 配置为从该目录读取,因此,它的构建方式无关紧要:xml 文件将“存在”。尽管如此,我仍然收到错误...

我在MSDN 的论坛上找到了@enough2012 的答案:

在“发布”对话框的“设置”窗格中的“文件发布选项”中选择“在目标位置删除其他文件”。

像魅力一样工作!

于 2017-08-04T12:40:01.630 回答