在本地IIS Web服务器上运行MVC 4 Web应用程序

时间:2013-02-02 10:50:28

标签: c# visual-studio-2010 iis asp.net-mvc-4 multi-tenant

更新 - 首先指向错误的目录。感谢您提示 Wiktor 。仍未成功通过

运行MVC4应用程序

我正在尝试(现在一段时间.. :))在我的开发PC上设置模拟多租户webapp。我了解到使用visual studio的内部网络服务器是不可能的,所以我正在尝试设置IIS。

我在我的主机中添加了fake个租户。

127.0.0.1 localhost
127.0.0.1 tenant1.mydomain.com
127.0.0.1 tenant2.mydomain.com

在IIS中,我创建了一个新网站test(端口8081),并将其指向C:\Azure\Websites\。在该目录中,我添加了一个Hello World html文件,以查看此位是否有效。

  • 我导航到localhost:8081 =>你好世界
  • 我导航到tenant1.mydomain.com:8081 =>你好世界。

酷,第一次证明生命。


下一步:使用在VS2012中创建的MVC4 webapp实现此功能。

我启动了一个新的MVC4 webapp并将其存储在: C:\Azure\Websites\MvcApplication1

我只是使用默认生成的网站进行测试,因此我按了F5并验证该网站是在firefox中打开的。所以我们的目标是让它从IIS中运行。

  • 创建了一个新网站test2(端口8082)
  • 将test2应用程序池设置为.net4.0
  • 将物理目录指向C:\Azure\Websites\MvcApplication1\MvcApplication1\
  • 导航至localhost:8082

HTTP错误500.21 - 内部服务器错误 Handler" ExtensionlessUrlHandler-Integrated-4.0"有一个糟糕的模块" ManagedPipelineHandler"在其模块列表中

卸载ASP.NET并重新安装它。相同的结果。

更改web.config时
preCondition="classicMode,runtimeVersionv4.0,bitness32"

preCondition="integratedMode,runtimeVersionv4.0,bitness32"

然后我收到此错误:

HTTP错误404.2 - 未找到 由于Web服务器上的ISAPI和CGI限制列表设置,无法提供您请求的页面。

我可以强调我是关于IIS配置的n00b ......:)

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

IIS中的ISAPI和CGI Restictions:

  • 为.net 4 32位
  • 添加isapi dll
  • 为.net 4 64位
  • 添加isapi dll

C:\的Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ ASPNET_ISAPI.DLL

C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ ASPNET_ISAPI.DLL

它有效。终于来了!

感谢Wiktor

答案 1 :(得分:0)

首先根据this site配置IIS:

IIS 7.5处理程序" extensionlessurlhandler-integrated-4.0"有一个糟糕的模块" managedpipelinehandler"在其模块列表中

对于上述问题,您必须转到控制面板>>已安装的程序和功能>>双击修复.NET Framework。

答案 2 :(得分:0)

首先将IIS配置为 手动配置 打开控制面板,然后单击程序和功能»打开或关闭Windows功能。 打开Internet信息服务。

在“Internet信息服务”下,启用以下功能: Web管理工具»IIS 6管理兼容性»IIS Metabase和IIS 6配置兼容性。

Web管理工具»IIS管理控制台,IIS管理脚本和工具以及管理服务。

在万维网服务下,启用以下内容: 应用程序开发功能下的所有功能,但服务器端包含除外。 常见的HTTP功能»默认文档,目录浏览,HTTP错误,Http重定向,静态内容。 安全性»基本身份验证,请求筛选,Windows身份验证。

在Microsoft .NET Framework 3.5.1下»Windows Communication Foundation HTTP激活。

创建网站后,打开Internet信息服务(IIS)管理器。 展开服务器节点。 展开“站点”节点,然后单击您的网站。

在右侧的IIS部分中,双击“身份验证”。 执行以下操作之一:

如果您使用的是表单身份验证,请确保已启用匿名身份验证和表单身份验证,并禁用所有其他身份验证。

如果您使用的是基于声明的身份验证,请确保仅启用匿名身份验证并禁用所有其他身份验证。

再次单击您的网站,在IIS部分中,双击“处理程序映射”。 确保已为* .svc和* .xamlx启用了处理程序映射,并将可执行路径设置为以下之一:

对于64位操作系统:%windir%\ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_isapi.dll 对于32位操作系统:%windir%\ Microsoft.NET \ Framework \ v4.0.30319 \ aspnet_isapi.dll 关闭Internet信息服务(IIS)管理器。