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

54
在x64的Windows 7上,我试图使用最新的IIS Express 8 beta作为64位进程(所以在页面上Environment.Is64BitProcess返回true)来运行hello world MVC 3网站。 IIS Express 7.5是32位的,但IIS Express 8支持64位(http://learn.iis.net/page.aspx/1266/iis-80-express-beta-readme/)。构建AnyCpu会返回Is64BitProcess false,构建x64会给出“尝试加载格式不正确的程序”的错误,就好像它正在尝试作为32位进程运行。重命名文件夹等实验表明,“C:\Program Files (x86)\IIS Express”是唯一被使用的内容,而“C:\Program Files\IIS Express”被VS忽略了。如何让VS使用x64的IIS Express主机?

你解决了吗?你使用下面的答案之一了吗?将其中一个标记为你接受的答案。干杯。 - CodeMonkeyKing
很奇怪,VS没有足够智能化,根据正在调试的项目的配置使用正确的IIS Express版本! - Josh M.
11个回答

84

此选项现已纳入 Vs 2013 / 2015 / 2017:

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


32

根据微软在http://visualstudio.uservoice.com的论坛帖子回复:

尽管这不被官方支持或认可,但此方法对我有效。

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

您可以通过设置以下注册表键来配置 Visual Studio 2012 使用 IIS Express 64 位版本:

reg add HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\11.0\WebProjects /v Use64BitIISExpress /t REG_DWORD /d 1

然而,此功能并未得到官方支持,也未经过微软的全面测试。我们正在考虑在下一版 Visual Studio 中提供更好的 IIS Express 64 位版本支持。

允许在 Visual Studio 2012 中运行 IIS Express 64 位版本


1
在VS2013中也可以工作并且是必要的 - 其他解决方法可能可行,但开箱即用的x64-only组件或程序集在VS2013中无法工作 - 尽管Microsoft在MSDN上做出了承诺,但问题仍未得到解决。 - Chris Moschini
@ChrisMoschini 对于VS2013,有一种比注册表设置更简单的方法。请参阅Eric Bole-Feysot对这个问题的更新答案。 - Chris W. Rea
1
@ChrisW.Rea 谢谢!值得注意的是,这个复选框似乎只是切换了那个注册表项。 - Chris Moschini

6
晚了一步,但是VS2013中有这个选项。
工具 -> 选项 -> 项目和解决方案 -> Web项目 -> 使用64位版本的IIS Express...

我看了一下,VS 2012 Ultimate没有这个选项。也许是时候升级了。 - DCShannon
2
这是@Eric Bole-Feysot答案的完全副本。 - CodeMonkeyKing

4

明白了,感谢确认。对于其他寻找基于VS的解决方案的人,我发现你可以使用纯IIS w/ x64应用程序池-在global.asax中设置断点,点击运行,将空格添加到web.config并保存,这将触发断点,几乎与IIS Express一样好用。 - bunt
为了简化在命令行中运行的任务,您可以从VS运行x86版本,使用ProcessExplorer复制命令行,只需在命令中将“Program Files(x86)”替换为“Program Files”。 - axk

3

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


3
将VS2012项目在x64上运行在IIS8 Express中,按照以下步骤进行操作。我正在运行x64 WCF服务。请参阅以下内容:
  • 安装IIS Express 8的x64版本。

  • 将项目设置为运行x64位。

enter image description here

将以下英文文本翻译成中文:
  • 添加自定义 Web 服务器 URL。因为您不希望在项目运行(F5)时启动服务。

enter image description here - 编写一个批处理文件并添加以下内容。请放置正确的应用程序配置文件位置和正确的项目名称。保存批处理文件。

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文件启动64位IIS Express 8。查看Windows任务管理器和IIS Express系统托盘。 enter image description here

enter image description here


也许像这样的命令:iisexpress.exe /config:“C:\Users{your user here}\Documents\IISExpress\config\applicationhost.config” /site:“WcfService.x64” /apppool:“Clr4IntegratedAppPool” - Kiquenet
我有Windows 8.1 64位操作系统。我认为我已经安装了iisexpress_8_0_RTM_x64_en-US.msi,因为如果我尝试安装iisexpress_8_0_RTM_x64_en-US.msi,会出现“修复”选项而不是“安装”,但我在%ProgramFiles(x86)%/IISExpress路径下有IISExpress 8.0(x86?)。在任务管理器中出现了IIS Express工作进程(32位)。 - Kiquenet

2

您可以通过命令行以64位模式运行IIS Express,然后使用VS的“附加到进程”调试。
请参见此问题
祝玩得愉快。


我如何在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路径中有IISExpress 8.0(x86?)。 - Kiquenet

2

看起来创建一个只启动64位IIS的EXE并将其放置在32位iisexpress.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 ) );
        }
    }
}

1

简单的方法就是将IIS x64设置为WEB项目的启动程序:

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


我尝试了这个方法,但对我没有用。VS仍然启动了(x86)目录中的版本。 - Tim Lewis

0

我正在使用VS2022,将位数从86改为64对我有用。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接