gpt4 book ai didi

azure - Azure 模拟器/IIS Express 和 SSL 客户端证书身份验证出现 web.config 错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:07 29 4
gpt4 key购买 nike

在有人感到困惑之前,这是针对 IIS Express 的,而不是 IIS。

我们有一个需要 SSL 客户端证书身份验证的 MVC5 应用程序。在开发过程中,它在 VS2013 中的 Azure 模拟器中运行,该模拟器在管理员权限下运行(针对端口 80/443)。

当我们在 VS2013 (F5) 中启动应用程序时,它会在 Azure 模拟器中运行它,但会立即抛出 HTTP 错误 500.19 - 详细信息的内部服务器错误

This configuration section cannot be used at this path. This happens when the section is locked at a parent level. Locking is either by default (overrideModeDefault="Deny"), or set explicitly by a location tag with overrideMode="Deny" or the legacy allowOverride="false".

配置源是我们的 MVC5 应用程序的 web.config,位于以下行:

<security>
<access sslFlags="SslNegotiateCert" />
</security>

有趣的是,我已经设置了 c:\users\<my_username>\Documents\IISExpress\Config\applicationhost.config拥有

<section name="access" overrideModeDefault="Allow" />

关于此的文档不​​多,但我们从 Google 收集到的信息表明,对于常规 IIS Express,这应该足够了。我怀疑在 Azure 模拟器+管理员权限中运行 IIS Express 会破坏某些内容,但无法诊断此问题。

有人知道如何让它工作吗?

最佳答案

好的,那么this question and it's answer帮了很多忙。正如怀疑的那样,c:\users\<my_username>\Documents\IISExpress\Config\applicationhost.config似乎并不重要,因为 Azure 模拟器似乎生成了另一个不关心该文件的 IIS Express 实例。

正确的方法似乎是通过 AppCmd.exe“解锁”该设置,因此解决方案如下:

  1. 在 Azure 云服务中添加启动任务。

    • 编辑 ServiceDefinition.csdef
    • 将以下内容添加到您的角色中(对我来说,这位于 <Webrole> ... </WebRole>
    <Startup>
    <Task commandLine="UnlockSslSettingsSection.cmd" executionContext="elevated" taskType="simple" />
    </Startup>
  2. 添加UnlockSslSettingsSection.cmd文件到您的解决方案的项目中,然后添加以下两行(这两行都很关键,不要重构)。

    IF NOT DEFINED APPCMD SET APPCMD=%SystemRoot%\system32\inetsrv\AppCmd.exe 
    %APPCMD% unlock config /section:system.webServer/security/access
  3. 在解决方案资源管理器中,转到项目,右键单击 UnlockSslSettingsSection.cmd => 属性 => 将“复制到输出目录”设置为“始终复制”

关于azure - Azure 模拟器/IIS Express 和 SSL 客户端证书身份验证出现 web.config 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24148748/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com