Azure 上托管的 MVC 4 网站说我无权查看目录或页面

Posted

技术标签:

【中文标题】Azure 上托管的 MVC 4 网站说我无权查看目录或页面【英文标题】:MVC 4 website hosted on Azure says I do not have permission to view directory or page 【发布时间】:2014-08-18 23:16:03 【问题描述】:

由于我的 FTP 凭据被锁定,我目前无法查看我的日志,但我在尝试查看我的主页时看到以下消息:

您无权查看此目录或页面。

我查看了关于 SO 的其他问题并进行了一些谷歌搜索(无济于事)并发现以下内容:

ASP.NET 4.5 MVC 4 not working on Windows Server 2008 IIS 7

http://www.iis.net/learn/get-started/introduction-to-iis/iis-modules-overview#Precondition

很遗憾,我一直无法找到让我的页面正常工作的修复程序。我相信这是我可以通过 web.config 控制的 IIS '东西',但我不知道它可能是什么。请,请,请帮助我,向我询问我尚未提供的关键信息我不确定进一步诊断我的问题还需要什么其他信息。

这是我的配置文件:

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <connectionStrings>
    <add name="DefaultConnection" connectionString="blahblahblah" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <log4net configSource="log4net.config" />
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusivejavascriptEnabled" value="true" />
    <add key="enableSimpleMembership" value="false" />
  </appSettings>
  <!--
    For a description of web.config changes for .NET 4.5 see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
    <customErrors mode="Off" />
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5.1" />
    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login" timeout="2880" />
    </authentication>
    <pages>
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.html" />
        <add namespace="System.Web.Optimization" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <membership defaultProvider="RavenDBMembership">
      <providers>
        <clear />
        <add name="RavenDBMembership" applicationName="Website123" type="Mag.Escrow.Web.RavenProvider.Provider.RavenDBMembershipProvider" />
      </providers>
    </membership>
    <profile>
      <providers>
        <clear />
      </providers>
    </profile>
    <roleManager enabled="true" defaultProvider="RavenDBRole">
      <providers>
        <clear />
        <add name="RavenDBRole" applicationName="WebSite123" type="Mag.Escrow.Web.RavenProvider.Provider.RavenDBRoleProvider" />
      </providers>
    </roleManager>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
    <handlers>
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
      <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
      <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="v11.0" />
      </parameters>
    </defaultConnectionFactory>
  </entityFramework>
</configuration>

【问题讨论】:

您将站点托管在什么位置:Azure VM? Azure 云服务 Web 角色或 Azure 网站? @viperguynaz Azure 网站 请你看看我在ASP MVC in IIS 7 results in: HTTP Error 403.14 - Forbidden上的回答。 【参考方案1】:

我只见树木不见森林!

在我的 _Layout 中,我看到了一个 RenderAction,上面有 Authorize

正是这个属性导致了 401,不幸的是,它不是很明显。

我相信这里一定有一个答案,请,如果你能找到它,然后在此处链接以供其他人找到,因为我无法找到。

http://blogin.codeinside.eu/2011/09/06/fix401-unauthorized-access-is-denied-due-to-invalid-credentials-on-asp-net-mvc-iis-7/

【讨论】:

【参考方案2】:

删除与 Ex​​tensionlessUrlHandler-ISAPI-4.0_32bit & ExtensionlessUrlHandler-ISAPI-4.0_64bit 相关的 4 行 - 参考How to: Change configuration options for a web site。您不应尝试同时配置经典模式和集成模式。默认情况下,Azure 网站以集成模式运行 - 仅当您的旧网站仅在旧版本的 IIS 上运行时,您才应使用经典选项。

另外,由于您使用的是 RavenDB,请查看这些关于 Azure Web sites and embedded RavenDB 的 SO 帖子。

【讨论】:

感谢您的意见,我已按照您的建议删除了这些行,但它们并没有解决我的问题,但是我一直在研究我的问题并找到了解决方案,我会回答我自己的问题。

以上是关于Azure 上托管的 MVC 4 网站说我无权查看目录或页面的主要内容,如果未能解决你的问题,请参考以下文章

Azure 上托管的高可用性 Service Fabric WebApi

Azure API 网关根据租户 ID 将 url 重新路由到不在 Azure 上托管的后端应用程序?

无法将 Azure VM 上托管的 WCF 服务引用添加到 VS2015 项目

你可以使用 gRPC/gRPC-Web 在 Azure 上托管的微服务之间进行通信吗?

SqlException (0x80131904):在 Azure 上托管的 .NET 6 WebAPI 上的用户“dbuser”登录失败

允许 http 和 https 指向我在 GCP 存储桶上托管的静态网站