无法让 IIS Express 8 beta 将网站作为 64 位进程运行

Posted

技术标签:

【中文标题】无法让 IIS Express 8 beta 将网站作为 64 位进程运行【英文标题】:Can't get IIS Express 8 beta to run website as 64-bit process 【发布时间】:2012-04-29 10:20:48 【问题描述】:

在 x64 Windows 7 上,我正在尝试使用 IIS Express 8 最新测试版让 hello world MVC 3 网站作为 64 位进程运行(因此 Environment.Is64BitProcess 在页面上返回 true)。

IIS Express 7.5 是 32 位,但 IIS Express 8 确实支持 64 位 (http://learn.iis.net/page.aspx/1266/iis-80-express-beta-readme/)。

无法获得任何 64 位的爱。

构建 AnyCpu 返回 Is64BitProcess false,构建 x64 会给出“尝试加载格式不正确的程序。”就好像它试图以 32 位进程运行一样。

重命名文件夹等实验表明“C:\Program Files (x86)\IIS Express”是唯一被使用的东西,而“C:\Program Files VS 忽略了 \IIS Express"

如何让 VS 使用 x64 IIS Express 主机?

【问题讨论】:

你搞定了吗?您是否使用了以下答案之一?标记一个作为您接受的答案。干杯。 奇怪的是 VS 不够聪明,无法使用正确版本的 IIS Express,具体取决于被调试项目的配置! 【参考方案1】:

此选项现在是 Vs 2013 / 2015 / 2017 的一部分:

工具 |选项 |项目和解决方案 |网站项目 |使用 64 位版本的 IIS Express

【讨论】:

【参考方案2】:

来自 Microsoft 对 http://visualstudio.uservoice.com 上的论坛帖子的回复 -

这对我有用,即使它没有得到 Microsoft 的正式认可或支持。

Mike Harder (Microsoft) 发表评论 · 2013 年 1 月 31 日下午 5:26

您可以通过以下方式将 Visual Studio 2012 配置为使用 IIS Express 64 位 设置以下注册表项:

注册添加 HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects /v 使用64BitIISExpress /t REG_DWORD /d 1

但是,此功能不受支持且尚未经过全面测试 由微软。改进了对 IIS Express 64 位的支持 考虑下一个版本的 Visual Studio。

Allow for IIS Express 64 bit to run from Visual Studio 2012

【讨论】:

在 VS2013 中也有效并且是必需的 - 其他解决方法是可能的,但开箱即用的仅 x64 组件或程序集在 VS2013 中不起作用 - 尽管微软在 MSDN 上断言,但仍未修复。 @ChrisMoschini 对于 VS2013,有比注册表设置更简单的方法。请参阅 Eric Bole-Feysot 对此问题的最新回答。 @ChrisW.Rea 谢谢!值得注意的是,此复选框似乎只是切换该 Reg 条目。【参考方案3】:

聚会迟到了,但 VS2013 在选项中有这个。

工具 -> 选项 -> 项目和解决方案 -> Web 项目 -> 使用 64 位版本的 IIS Express...

【讨论】:

我看了一下,VS 2012 Ultimate 没有有这个选项。可能是我升级的时候了。 这与@Eric Bole-Feysot 的回答完全相同。【参考方案4】:

在这种情况下,您必须从命令行启动 iisexpress,

http://learn.iis.net/page.aspx/870/running-iis-express-from-the-command-line/

由于我不确定 Microsoft 何时会更新 VS 集成部分以允许您选择 x64 IIS Express。当前的集成显然仅限于 x86。

【讨论】:

知道了,谢谢确认。对于类似地寻找基于 VS 的解决方案的任何人,我发现您可以使用带有 x64 应用程序池的直接 IIS - 在 global.asax 中放置断点,点击运行,将空格添加到 web.config 并保存,这将触发断点,几乎和 IIS Express 一样好。 为了简化在命令行中运行它的任务,您可以从 VS 运行 x86 版本,使用 ProcessExplorer 复制命令行并将“Program Files (x86)”替换为“Program Files”在命令中。【参考方案5】:

在注册表中,转到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\IISExpress\8.0\InstallPath 并将路径更改为 64 位 iisexpress.exe 位置。

【讨论】:

【参考方案6】:

您可以从命令行以64位模式运行IIS Express,然后使用VS“附加到进程”进行调试。 见this question。 玩得开心。

【讨论】:

如何在 64 位模式下运行 IIS Express?我有 Windows 8.1 64 位。我想,我有 iisexpress_8_0_RTM_x64_en-US.msi 因为如果我尝试安装 iisexpress_8_0_RTM_x64_en-US.msi 会出现修复选项并且不会出现在安装中,但我在 %ProgramFiles(x86)%/IISExpress 路径 (x86?) 中有 IISExpress 8.0。 【参考方案7】:

似乎创建除了启动 64 位 IIS 并将其替换为 32 位 iisexpress.exe 的 EXE 就可以完成这项工作。

这是我用来创建 EXE 的 C# 代码:

using System.Diagnostics;

namespace IISExpress64

    class Program
    
        static void Main( string[] args )
        
            Process.Start( @"C:\Program Files\IIS Express\iisexpress.exe", string.Join( " ", args ) );
        
    

【讨论】:

【参考方案8】:

执行以下操作以在 x64 上的 IIS8 Express 中运行 x64 项目中的 VS2012 项目。我正在运行 x64 WCF 服务。见下文,

安装 x64 版本的 IIS Express 8。

将项目设置为运行 x64 位。

添加自定义 Web 服务器 URL。因为您不想在项目运行时启动服务 (F5)。

- 编写一个bat文件并添加以下内容。放置 applicationhost.config 的正确 unc 位置和正确的项目名称。保存 bat 文件。

cd "Program Files"/IIS Express 
iisexpress.exe  /config:"\\companyname.com\root\User-Profiles\testusername\Documents\IISExpress\config\applicationhost.config" /site:"YourProjectName.WcfHost" /apppool:"Clr4IntegratedAppPool"
运行 (F5) 项目。 双击 bat 文件启动 IIS Express 8 for x64。请参阅 Windows 任务管理器和 IIS Express 系统托盘。

【讨论】:

可能是这样的命令:iisexpress.exe /config:"C:\Users\your user here\Documents\IISExpress\config\applicationhost.config" /site:"WcfService.x64" / apppool:"Clr4IntegratedAppPool" 我有 Windows 8.1 64 位。我想,我有 iisexpress_8_0_RTM_x64_en-US.msi 因为如果我尝试安装 iisexpress_8_0_RTM_x64_en-US.msi 会出现修复选项并且不会出现在安装中,但我在 %ProgramFiles(x86)%/IISExpress 路径(x86?)中有 IISExpress 8.0。并在任务管理器中出现 IIS Express 工作进程(32 位)【参考方案9】:

简单的可能性就是将 IIS x64 设置为 WEB 项目的启动程序:

项目属性 -> Web -> 启动操作 -> 启动程序:c:\Program Files\IIS Express\iisexpress.exe 命令参数:/path:yourProjectPath /port:yourPort

【讨论】:

我试过这个,但它对我不起作用。 VS 还是在 (x86) 目录下启动版本。【参考方案10】:

为了在我的系统上解决这个问题,我作弊了——我将 64 位可执行文件(\Program Files\IIS Express\)复制到了 32 位可执行文件(\Program Files (x86)\IIS Express\)。 Visual Studio 似乎并不关心是哪一个。

我想我们将不得不等待,看看 VS 2012 的最终版本是否允许在 32 位和 64 位 IIS Express 之间进行选择。

【讨论】:

以上是关于无法让 IIS Express 8 beta 将网站作为 64 位进程运行的主要内容,如果未能解决你的问题,请参考以下文章

IIS Express 8 - 无法写入配置文件

vs运行时候冒了这个错:无法启动IIS Express Web 服务器~Win10

IIS 将 ASP.NET 5 BETA 8 站点部署到 IIS 会出现 HTTP 错误 500.19 - 内部服务器错误

Visual Studio-IIS Express 支持局域网访问配置

让IIS Express 也支持外部链接

无法启动 IIS Express