我有一个简单的.Net Core web api应用程序,是Visual Studio在创建新项目时创建的应用程序。我想通过FTP(TFS 2017构建作业的一部分)将其部署到Azure应用服务,这是成功的:
然而,当尝试像http://somerandomname.azurewebsites.net/api/values
这样的GET时,我得到的只是带有文字的404
您要查找的资源已被删除,名称已更改或暂时不可用。
我错过了什么?
所以需要一个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>
我使用Azure DevOps时遇到了类似的问题。
我决定尝试通过右键单击部署到另一个应用服务,这样我就可以看到我应该拥有的web.config。
右键单击已部署的应用程序确实显示/ api / values,因为devops应用程序没有。
web.configs的唯一区别是stdoutLogFile的位置
使用右键单击部署
stdoutLogFile="\\?\%home%\LogFiles\stdout"
使用devops
stdoutLogFile=".\logs\stdout
然而,右键单击部署包括我所有的第三方dll,所以我在想我的devops管道nuget设置需要纠正。