我尝试将 asp.net core mvc 应用程序和 asp.net core WebApi 部署到 azure。
两者都应在同一网址上运行。
我在设置下创建了一个虚拟目录: “站点\wwwroot\webapi”
并下载了发布设置。
我将 mvc 应用程序发布到:
网站名称:示例
目标网址:http://example.azurewebsites.net
我发布到的 WebApi:
站点名称:example/webapi
目标网址:http://example.azurewebsites.net/webapi
但是如果我尝试访问 URL http://example.azurewebsites.net/webapi
我收到错误 500:
由于发生内部服务器错误,该页面无法显示。
我花了几个小时寻找解决方案,但无法修复它。
最佳答案
我已经解决了这个问题。我在项目中创建的 Web.config
文件旁边创建了一个 Web.RemoveHandlers.config
文件,并将其内容设置为:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<handlers xdt:Transform="Remove" />
</system.webServer>
</configuration>
然后我编辑了 .csproj 文件并添加了:
<ItemGroup>
<DotNetCliToolReference Include="Microsoft.DotNet.Xdt.Tools" Version="2.0.0" />
</ItemGroup>
<Target Name="RemoveHandlersFromWebConfig" AfterTargets="_TransformWebConfig">
<PropertyGroup>
<_SourceWebConfig>$(PublishDir)Web.config</_SourceWebConfig>
<_XdtTransform>$(MSBuildThisFileDirectory)Web.RemoveHandlers.config</_XdtTransform>
<_TargetWebConfig>$(PublishDir)Web.config</_TargetWebConfig>
</PropertyGroup>
<Exec Command="dotnet transform-xdt --xml "$(_SourceWebConfig)" --transform "$(_XdtTransform)" --output "$(_TargetWebConfig)"" />
</Target>
在包管理器控制台中运行 dotnet Restore
后。
发布到 Azure 后,一切都按预期工作。
我在以下位置找到了此解决方案:
关于c# - azure 虚拟目录 webdeploy 后 Asp.Net Core WebApi 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49015111/