构建/发布 web .net 核心 api:我无法访问他们从邮递员返回 500 的任何端点
Posted
技术标签:
【中文标题】构建/发布 web .net 核心 api:我无法访问他们从邮递员返回 500 的任何端点【英文标题】:Build/Publish a web .netcore api : I can't access any of my endpoints they returns 500 from postman 【发布时间】:2021-11-20 12:39:35 【问题描述】:我有一个 .net 5.0 web api 应用程序。我想发布构建它以在 Windows Server 2019 上运行它。
我使用“dotnet run --launch-profile CMDLINE”在命令行中本地构建它 CMDLINE 是我在 launchSettings.json 中的个人资料之一
然后我尝试使用以下命令发布我的应用程序。
然后我尝试“dotnet application.dll” 试图在本地运行 dll。 该应用程序似乎已启动,但是当我尝试访问我的公共端点时(返回带有标签 [Anonymous] 的字符串不需要身份验证,然后我在邮递员中收到错误 500
我的项目总是在 /debug/net5.0/ 或 /debug/net5.0/publish/ 中编译
我是否缺少重要步骤,请帮忙。我基本上想将我的构建/发布的应用程序提供给我的系统管理员,它将在 Windows Server 2019 上发布 API。
他只是告诉我运行“dotnet application.dll”没有按预期工作。 (以前从来没有在这样的自定义服务器上发布应用程序,总是使用在线托管。)
【问题讨论】:
要使用正确的启动配置文件,您需要在指定的情况下实际运行您的应用程序,例如dotnet youFile.dll --launch-profile CMDLINE
,命令行参数不会编译到二进制文件中,另外dotnet publish
实际上也可以编译在吐出二进制文件之前,您的应用程序不使用预编译的调试二进制文件
感谢您的评论,您实际上将我推向了解决方案!我尝试了您的命令,发现我的托管环境与我指定的 ASPNETCORE_ENVIRONMENT 变量不同!我只是用“set ASPNETCORE_ENVIRONMENT=Staging”设置它并构建它并且它工作。
【参考方案1】:
我终于注意到我的托管环境与我在 launchsettings.json 中指定的 ASPNETCORE_ENVIRONMENT 变量不同!
我只是在命令行中使用“set ASPNETCORE_ENVIRONMENT=Staging”指定了我的托管环境,并使用“dotnet application.dll --launch-profile CMDLINE”构建了它,它就可以工作了。 “dotnet application.dll”也在工作。
【讨论】:
以上是关于构建/发布 web .net 核心 api:我无法访问他们从邮递员返回 500 的任何端点的主要内容,如果未能解决你的问题,请参考以下文章
带有 EF Core 更新实体的 ASP.Net 核心 Web Api 如何
在 web api 控制器(.net 核心)中使用 async/await 或任务
使用 .net 核心 Web API 对 .net 控制台应用程序进行身份验证
ASP.NET Core Web API:尝试激活时无法解析服务类型