ASP.NET 4.5 MVC 4在Windows Server 2008 IIS 7上不工作

ASP.NET 4.5 MVC 4在Windows Server 2008 IIS 7上不工作,asp.net,asp.net-mvc,iis,windows-server-2008,Asp.net,Asp.net Mvc,Iis,Windows Server 2008,显然,我遗漏了一些东西,我无法在IIS 7上的Windows Small Business Server 2008上部署简单的ASP.NET MVC 4、.NET 4.5应用程序 已安装.NET framework 4.5 我应该在应用程序池中查看该版本(4.5)的应用程序基本设置吗?现在,我只有2.0和4.0,因为4.5类似于3.5,只添加在4.0框架之上,我想这是正常的 浏览主页时,出现以下错误: 403-禁止:访问被拒绝。 您没有使用您提供的凭据查看此目录或页面的权限 当我请求唯一名为Pa

显然,我遗漏了一些东西,我无法在IIS 7上的Windows Small Business Server 2008上部署简单的ASP.NET MVC 4、.NET 4.5应用程序

已安装.NET framework 4.5

我应该在应用程序池中查看该版本(4.5)的应用程序基本设置吗?现在,我只有2.0和4.0,因为4.5类似于3.5,只添加在4.0框架之上,我想这是正常的

浏览主页时,出现以下错误:

403-禁止:访问被拒绝。 您没有使用您提供的凭据查看此目录或页面的权限

当我请求唯一名为Page/Page/index的控制器时,我得到404未找到页面。像ASP.NET进程一样,从未收到http请求

我可以要求一个简单的HTML页面

应用程序池设置为.NET 4.0,并集成为托管管道模式

网络服务具有对目录的读/写访问权限

当然,从VS2012开始,该应用程序可以完美地工作

我不知道这里有什么不对劲,搜索引擎查询也帮不了什么忙

如果有人能给我一个提示,我将不胜感激。 谢谢

编辑

DLL已经在bin文件夹中,如System.Web.Mvc、System.Web.Razor等

我创建了一个空的test.aspx页面,以确保asp.net工作进程收到了请求,并且页面是正常的。因此,MVC路由似乎不起作用,尽管我的ASP.NET MVC 3 web应用程序在该服务器上运行良好

在.NET4.5安装之后,我做了一个aspnet_regiis-iru(以防万一),在应用程序上添加了一个aspnet_客户端文件夹,但这仍然不能解决问题

在IIS身份验证部分启用匿名身份验证,授权显示允许所有用户使用

ASP.NETMVC4已经安装,我只是做了一个修复来确保

即使安装了ASP.NET MVC 4,请求/page/index操作的404错误将由标准IIS返回,而不是标准aspnet错误。因此,我只是仔细检查并修复了一下,MVC4框架似乎没有正确安装。我在哪里可以继续调查

@Mystere Man,我已将匿名身份验证更改为使用应用程序池标识,停止、启动应用程序,但仍然出现相同的错误。如果ASP.NETMVC4不接受请求,看起来确实如此

以下是web.config的一部分:

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <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="*" 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="*" 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="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </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="1.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.SqlConnectionFactory, EntityFramework" />
  </entityFramework>

答案正是我想要的,这是一个解决此问题的好方法,而不存在与runAllManagedModulesForAllRequests相关的所有性能问题

我们几乎放弃了,买了一台新的Windows 2012服务器(ASP.NET MVC应用程序就是从这台服务器上运行的)。尝试Martin的解决方案后,Windows 2008服务器工作正常。

尝试使用以下方法:

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    ...
</system.webServer>

...
编辑:

上述解决方案适用于.NET3.5或更低版本。 如果您使用的是.NET 4.0或更高版本,您可能想试试


另外,了解这两者之间的区别也值得一读。

我不知道这是否能解决您的问题,但它解决了我在IIS上部署MVC应用程序的问题

我必须为应用程序的主/虚拟目录向aspnet_isapi.dll添加一个通配符应用程序映射。您可以通过右键单击网站/虚拟目录并选择主目录/虚拟目录选项卡,单击配置按钮,然后单击通配符应用程序映射部分下的插入按钮来完成此操作

C:\WINDOWS\microsoft.net\Framework64\v4.0.30319\aspnet\u isapi.dll

祝你好运

根据


我也有同样的问题,这个修补程序修复了它:

我也有类似的问题。我尝试了这里描述的许多解决方案(Web.Config system.webServer配置条目等),但都没有成功。最后,我发现了我的特定安装的问题所在。我将我的网站发布到本地文件系统,然后将这些文件复制到服务器上。原来Global.asax文件不是已发布文件的一部分。一旦我复制了该文件,错误就消失了。

如果您无法应用,而不是使用accepted中建议的runAllManagedModulesForAllRequests解决方案,则应使用带前提条件的模块配置=“”如下所示,以避免对静态内容造成负面影响,如博客帖子和一些答案评论中所述

应该给这个论点增加一些分量。这篇文章是我所发现的设置之间相互作用的最好解释。上的IIS文档也值得一读

请记住,如果已应用QFE,则无需进行此配置更改,因为此行为将成为默认行为

<system.webServer>
  <modules>
    <remove name="UrlRoutingModule-4.0" />
    <add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
  </modules>
</system.webServer>

如SonicTheLichen所述,如果您是从Visual studio发布,默认情况下不会复制gloabal.asax文件。通过将global.asax复制到Web服务器,应该可以解决此问题。感谢SonicTheLichen证明了解决方案

问候,,
索拉布

我也有类似的问题。我不得不在安装了Windows 2008和IIS 7.5的新服务器上部署.net MVC站点。当我检查程序和功能时,我发现只有.Net Framework 4.5.1安装了。我手动启用了.Net 3.5.1 Windows功能。在我安装MVC4.0之后,路由没有工作

我的解决方案:
1) 卸载.Net 4.5.1框架和MVC4.0
2) 安装.Net Framework 4.0
3) 安装.Net framework 4.5.1

4) 安装MVC 4.0

我知道这很旧,但windows更新刚刚为我浪费了几个小时:

如果您在Global.asax中处理异常,这也可以很简单,因为保持windows更新与您的开发环境相同。。。对我来说,我显然没有,这导致了一个“无法加载…”的ex