Azure应用服务托管asp.NET核心MVC应用

时间:2020-08-24 15:57:04

标签: azure model-view-controller azure-web-app-service

我正在尝试使我们现有的asp.NET core mvc应用程序在azure应用程序服务中运行。部署工作正常,我希望所有文件都在服务器上。

可悲的是,尝试访问该网址后,出现“您无权查看此目录或页面的权限”消息。这是状态码403。

日志提供了更多信息:

<div id="content"><div class="content-container"><h3>HTTP Error 403.14 - Forbidden</h3><h4>The Web server is configured to not list the contents of this directory.</h4></div><div class="content-container"><fieldset><h4>Most likely causes:</h4><ul>     <li>A default document is not configured for the requested URL, and directory browsing is not enabled on the server.</li> </ul></fieldset></div><div class="content-container"><fieldset><h4>Things you can try:</h4><ul>   <li>If you do not want to enable directory browsing, ensure that a default document is configured and that the file exists.</li>    <li>           Enable directory browsing using IIS Manager.           <ol>          <li>Open IIS Manager.</li>          <li>In the Features view, double-click Directory Browsing.</li>             <li>On the Directory Browsing page, in the Actions pane, click Enable.</li>         </ol>   </li>   <li>Verify that the configuration/system.webServer/directoryBrowse@enabled attribute is set to true in the site or application configuration file.</li>

似乎应该使用诸如index.html之类的登录页面,但对于给定的mvc项目而言,该页面不存在。

我也找不到该配置的任何文档。即使是youtube视频,也展示了托管mvc应用有多么容易,也无需进行任何其他配置。 (例如,这个watch

如果有人能告诉我我哪里出问题了,我会很高兴。

预先感谢

约书亚

1 个答案:

答案 0 :(得分:1)

我已经通过Visual Studio在Azure App Service上部署了.NET Core MVC应用程序,并且可以正常工作。因此,我注意到在此过程中,VS创建了一个 web.config 文件。通过Kudu将其从App Service中删除后,该应用程序停止了。

因此,解决方案是在App Service环境的 wwwroot 文件夹中创建一个 web.config 文件。内容如下:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <location path="." inheritInChildApplications="false">
  <system.webServer>
      <handlers>
        <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
      </handlers>
      <aspNetCore processPath="dotnet" arguments=".\My.Main.Project.dll" 
stdoutLogEnabled="false" stdoutLogFile="\\?\%home%\LogFiles\stdout" 
hostingModel="inprocess" />
    </system.webServer>
  </location>
</configuration>

为记录起见,该应用程序是在.NET Core 3.1上创建的。