我正在尝试将一个新的 .net API 发布到 IIS。因为这需要在生产服务器上完成,所以我首先使用样本API项目和测试服务器来找出如何进行操作。
我使用这个作为参考。
该项目使用 .net 5.0。 我安装了 Windows .NET Core 主机捆绑包 v5.0.6 我安装了 Windows .NET Core 运行时 v5.0.6
我按照所有必要的步骤在 IIS 中创建了应用程序池和网站。
示例项目只是最基本的 .net core web API 项目,你可以得到,只需点击 web API 并不做任何更改,它只有 1 个端点和一个 Swagger 页面。
当我将其发布到测试服务器并尝试在浏览器中查看 Swagger 页面时,我收到 404 错误。
如果我使用 dotnet "Projectname".exe 运行项目 exe,则会收到以下错误消息:
D:\ThirdPartyAPI>dotnet Test.exe
Error:
An assembly specified in the application dependencies manifest (Test.deps.json) has already been found but with a different file extension:
package: 'Test', version: '1.0.0'
path: 'Test.dll'
previously found assembly: 'D:\ThirdPartyAPI\Test.exe'
我尝试编辑 Test.deps.json
,但不确定要删除什么内容,并且每次编辑后,程序集都会变得无效。
我尝试将项目、运行时和应用程序池切换为32位,但结果相同。
如果我在包管理器控制台中键入dotnet publish
,然后通过转到已发布的文件夹并使用命令dotnet run Test.exe
在本地运行api,结果也相同。
我尝试了其他SO帖子上找到的所有可能的解决方案,但没有任何改变。
我在我的csproj中添加了<PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
,但仍然没有任何改变。
我尝试从libraries关键字中删除我的Test.deps.json中的副本,这是其他SO帖子推荐的,但这使程序集无效。
我现在已经没有任何想法,希望能完成这个任务,以便可以继续进行。
如有需要,我将提供任何其他信息。谢谢您的帮助!
我尝试了相同的过程,使用.net core 3.1的样例API,第一次就成功了。可能可以将真实的API移植回3.1,但这绝对不是首选方法。