20

问题:

ADFS2要求 RP 信任使用 https。RP 信任存在https://localhost:44310/PAWS/。话虽如此,我需要让 IIS Express 在本地使用 SSL。因此,当我将ASP.NET MVC4项目配置为使用 IIS Express 时。 mvc4项目配置

当我将其签入 TFS(源代码控制)时,团队中的另一位开发人员得到了最新消息。该项目不会为他们加载。

MVC4项目不会加载

Visual Studio 2012 在打开解决方案时会显示以下错误消息: VS2012错误1 VS2012错误2

这是因为 IIS Express 不会自动读取项目文件并将 HTTPS 绑定添加到站点配置。这是 VS 添加到 IIS Express 的 applicationhost.config 文件中的配置

<site name="PAWS.Web-Site" id="2">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
        <virtualDirectory path="/" physicalPath="C:\Users\larsene\Documents\My Web Sites\PAWS.Web-Site14" />
    </application>
    <bindings>
        <binding protocol="http" bindingInformation="*:44310:localhost" />
    </bindings>
</site>

但我需要将绑定协议设置为 HTTPS,如下所示:

<binding protocol="https" bindingInformation="*:44310:localhost" />

我可以手动将其输入到 applicationhost.config 中。或者我可以像这样运行appcmd.exe来配置它。

"%ProgramFiles(x86)%\IIS Express\appcmd.exe" set site /site.name:PAWS.Web-Site /bindings:https/*:44310:localhost

但这两种方法中的任何一种都不是我想要的。我不想向每个从事这个项目的开发人员解释,他们必须在加载项目之前手动编辑他们的 IIS Express 设置。

如何重现问题:

这很容易通过首先关闭 VS2012 重新创建。然后删除位于 IIS Express 的配置文件夹

%USERPROFILE%\Documents\IISExpress

然后打开 VS2012 并打开配置为使用带有 https 的 IIS Express 的 MVC4 项目的解决方案。现在,VS2012 将无法加载项目并抱怨没有安全绑定。

我做错了什么或者我该如何解决这个问题,以便最新了解我项目的人能够运行它?

4

10 回答 10

10

我最近遇到了同样的问题,我已经能够确定它发生的原因。

Visual Studio 使用 Project Url 设置来设置 IIS Express http 绑定,然后查看 IISExpressSSLPort 设置来设置 https 绑定。

但是,如果您已将 Project Url 更改为 https 地址,那么 Visual Studio 就会感到困惑。出于 IIS Express 绑定更新的目的,它假定您已经为 Project Url 输入了 http 地址,并且似乎无法处理那里的 https 地址。

这使事情变得复杂,因为将项目 URL 更改为 https 地址是我发现让 Visual Studio 默认开始调试 https url 的唯一方法。

因此,这似乎是 Visual Studio 如何处理 IIS Express 绑定更新的问题。我不知道一个好的解决方法,它既允许自动绑定更新,又允许在加载 https 地址的情况下开始调试。

于 2013-01-29T19:30:33.773 回答
3

这看起来可能是 VS2012 中的错误...我能够处理此问题的唯一方法是手动编辑 IISExpress 配置文件:applicationhost.config,位于 C:\Users\YOUR_USER_NAME\Documents\IISExpress\ 下配置。然后在“站点”下,我修改了特定应用程序网站的块:

    <site name="YourSite" id="1">
    <application path="/" applicationPool="Clr4IntegratedAppPool">
                <virtualDirectory path="/" physicalPath="c:\..." />
            </application>
            <bindings>
                <binding protocol="https" bindingInformation="*:YOUR_PORT_#:localhost" />
            </bindings>
    </site>

将“绑定协议”更改为“https”并确保以管理员权限启动 Visual Studio 2012,至少在 IIS Express 中创建/修改站点之前。

希望这可以帮助...

于 2013-04-08T22:26:47.090 回答
3

我可以确认 Visual Studio 2013 没有这个问题。

从 VS2012 升级到 2013 为我解决了这个问题。

于 2014-04-20T18:21:48.923 回答
1

您需要在项目的属性列表中将 SSL Enabled 设置为 True,以便自动显示该绑定。(根据斯科特·汉塞尔曼)

如在 Visual Studio 2010 中所见

于 2012-11-19T16:10:47.140 回答
1

您是否尝试过以管理员身份打开项目(以管理员身份运行 VS2012)?

通常当您收到上述错误(为 ASP.NET 4.5 配置 web xxx 失败...)和(创建虚拟目录 xxx 失败)时,是因为 Visual Studio 没有足够的权限。

可能不是你的问题,但尝试一下也无妨。

于 2012-12-03T11:29:53.473 回答
1

首先,感谢您提供在本地计算机上重现此问题的步骤。其他团队成员也有这个问题,但是自从我创建了这个项目,我就没有遇到过。这让我有机会尝试一些不同的解决方案。

我发现在当前环境中效果最好(MS 没有修复)是将项目 url 保留为 http 值,但将启动 url 更改为 https 值。大多数开发人员应该很乐意在 VS 中更改它。

这适用于新机器,无需运行 bat 文件来配置 https 站点。您在 IIS Express 中确实有两个绑定(http 和 https),但除此之外,它似乎运行良好。

于 2013-12-16T18:50:33.560 回答
0

您是否尝试过在 .csproj 文件中手动配置端口?一旦你在那里配置它,它应该转移到其他工作站:

<IISExpressSSLPort>44310</IISExpressSSLPort>

此外,即使选中了“将服务器设置应用于所有用户”选项,项目的用户文件仍然可能导致问题。当我用 IIS Express 修复 SSL 问题时,我通常只是删除用户文件,因为在我解决了我的问题之后重新配置我的用户设置要容易得多。

于 2013-01-24T17:34:54.567 回答
0

我最近遇到了一个非常相似的问题,并在尝试解决时遇到了这篇文章。我注意到的一件事是,如果在 applicationhost.config 文件中设置了多个站点并使用 HTTPS 绑定,IIS Express 似乎会变得非常痛苦。

就我而言,我设置了 2 个站点以使用与端口 44300 相同的 SSL 绑定,更改其中一个站点上的 SSL 绑定之一上的端口号会导致类似于 OP 中的错误。我最终不得不删除其中一个站点,这并不理想。

经过一番挖掘后,我尝试将“需要 SSL”属性从切换truefalse,然后再切换回true。这触发了对 applicationhost.config 的更新,它使用新的端口号创建了一个新的 SSL 绑定。

我陷入了这个混乱,因为我复制了一个现有项目,并且我的配置试图在 2 个站点之间共享端口。

于 2013-11-18T16:35:50.197 回答
0

我看到两个选项:

  • 启用 Web 选项卡上的Apply server setting to all users (store in project file) 选项以将绑定配置移动到您的项目文件中。

    或者

  • 将项目的用户文件添加到源代码管理。

    任何一种方法都将允许用户获得最新版本并毫无问题地运行。

于 2015-04-27T20:32:39.887 回答
0

我最近在 VS 2019 和 IIS Epress 上遇到了一个非常相似的问题。我尝试将 http 更改为 https,以便可以使用 ADFS。 CE 站点无法访问 localhost n'autorise pas la connexion。

经过更多研究,我尝试将“需要 SSL”属性从 true 切换为 false,然后再切换回 true。这触发了对 applicationhost.config 文件 (... Vs \ ProjectName \ config \ applicationhost.config) 的更新,该文件创建了一个新的 SSL 绑定,并为 https 协议提供了一个新的端口号。因此,我使用建议的新端口修改了所有链接(在项目的 Web 属性、配置文件和 ADFS 配置中)并且它可以工作。结论,同一个站点的http端口没有必要和https一样。

于 2019-08-29T08:29:58.513 回答