部署到Azure后,.Net Core web api无法正常工作

问题描述 投票:3回答:2

我有一个简单的.Net Core web api应用程序,是Visual Studio在创建新项目时创建的应用程序。我想通过FTP(TFS 2017构建作业的一部分)将其部署到Azure应用服务,这是成功的:

enter image description here

然而,当尝试像http://somerandomname.azurewebsites.net/api/values这样的GET时,我得到的只是带有文字的404

您要查找的资源已被删除,名称已更改或暂时不可用。

从Kudu我得到以下错误:enter image description here

我错过了什么?

azure .net-core azure-web-sites asp.net-core-webapi azure-web-app-service
2个回答
1
投票

所以需要一个web.config。 VS 2017在添加新项目时使用某些默认值填充它并不好。使用VS 2017 web api默认项目,我使用右键单击菜单发布了它。这无缝地起作用。我从Azure Web服务中获取了web.config并将其集成到我自己的项目中,只更改了dll名称。现在,当构建作业代表TFS运行时,它在通过FTP上传到Azure应用程序服务的文件中具有web.config。

这是我结束的web.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
  <remove name="aspNetCore"/>
  <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
  <aspNetCore processPath="dotnet" arguments=".\Somerandomname.WebApi.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
</system.webServer>


1
投票

我使用Azure DevOps时遇到了类似的问题。

我决定尝试通过右键单击部署到另一个应用服务,这样我就可以看到我应该拥有的web.config。

右键单击已部署的应用程序确实显示/ api / values,因为devops应用程序没有。

web.configs的唯一区别是stdoutLogFile的位置

使用右键单击部署

stdoutLogFile="\\?\%home%\LogFiles\stdout"  

使用devops

stdoutLogFile=".\logs\stdout

然而,右键单击部署包括我所有的第三方dll,所以我在想我的devops管道nuget设置需要纠正。

我是asking about that here

© www.soinside.com 2019 - 2024. All rights reserved.