【问题标题】:Run MVC4 webapplication on local IIS webserver在本地 IIS Web 服务器上运行 MVC4 Web 应用程序
【发布时间】:2013-02-02 10:50:28
【问题描述】:

已更新 - 一开始指向错误的目录。感谢 Wiktor 的提示。通过

仍然没有成功运行 MVC4 应用程序

我正在尝试(现在有一段时间.. :))在我的开发 PC 上设置一个模拟的多租户 web 应用程序。我了解到这对于 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 => Hello world
  • 我导航到了tenant1.mydomain.com:8081 => Hello world。

酷,生命的第一个证明。


下一步:使用在 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 - 内部服务器错误 处理程序“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 ...... :)

有什么想法吗?

【问题讨论】:

  • 不要指向 mvcapplication\bin 而是指向 mvcapplication。
  • 嗯,好的。给了我一个新错误,我将对其进行调查(HTTP 错误 500.21 - 内部服务器错误)
  • 您的应用程序池是否设置为 asp 4.0?
  • 是的 apppool 正在运行 .net4.0
  • 你学了一次,然后半夜醒来就做。

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


【解决方案1】:

IIS 中的 ISAPI 和 CGI​​ 限制:

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

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll

而且它有效。终于!

感谢维克托

【讨论】:

  • 通过在控制面板的程序和功能的打开或关闭 Windows 功能部分中选择它们来安装它们会更好吗? Internet 信息服务 -> 万维网服务 -> 应用程序开发功能
【解决方案2】:

首先根据this site配置IIS:

IIS 7.5 处理程序“extensionlessurlhandler-integrated-4.0”的模块列表中有一个错误模块“managedpipelinehandler”

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

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
  • @PeterFoti 在我看来,这不是仅链接的答案。它可能是 VLQ,但绝对不是仅链接。
【解决方案3】:

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

在 Internet 信息服务下,打开以下功能: Web 管理工具 » IIS 6 管理兼容性 » IIS 元数据库和 IIS 6 配置兼容性。

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

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

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

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

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

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

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

再次单击您的网站,然后在 IIS 部分中,双击 Handler Mappings。 确保您已启用 *.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) 管理器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-25
    • 1970-01-01
    • 2011-06-17
    • 2016-07-17
    相关资源
    最近更新 更多