我有一个简单的.NET Core Web API应用程序-由Visual Studio在创建新项目时创建的应用程序。我想将其作为Team Foundation Server(TFS)2017生成作业的一部分通过FTP部署到Azure应用服务,这是成功的:
但是,当尝试GET
请求时,例如以下URL:
http://somerandomname.azurewebsites.net/api/values
我得到的是带有文本的404:
您要查找的资源已被删除,名称已更改或暂时不可用。
从Kudu,我收到以下错误:
我想念什么?
因此需要一个web.config。当添加新项目时,VS 2017会填充一些默认值,这是不好的。使用VS 2017 Web API默认项目,我已经使用右键菜单发布了它。这无缝地工作。我已经从Azure Web服务中获取了web.config并将其集成到我自己的项目中,仅更改了dll名称。现在,当构建作业代表TFS运行时,它具有文件之间的web.config,这些文件通过FTP上传到Azure应用服务。
这里是我结束的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设置需要进行纠正。