【问题标题】:web.config error with Azure Emulator/IIS Express and SSL Client cert authenticationAzure Emulator/IIS Express 和 SSL 客户端证书身份验证的 web.config 错误
【发布时间】:2014-06-10 18:51:56
【问题描述】:

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

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

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

此配置部分不能用于此路径。有时候是这样的 当该部分锁定在父级别时。锁定是通过 默认(overrideModeDefault="Deny"),或由位置显式设置 带有 overrideMode="Deny" 或旧的 allowOverride="false" 的标记。

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

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

有趣的是,我已经设置了c:\users\&lt;my_username&gt;\Documents\IISExpress\Config\applicationhost.config

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

这方面的文档并不多,但我们可以从 Google 中收集到的任何信息表明,对于常规 IIS Express,这应该足够了。我怀疑在 Azure Emulator+Admin 权限内运行 IIS Express 会破坏某些东西,但无法诊断。

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

【问题讨论】:

    标签: azure ssl iis-express


    【解决方案1】:

    好的,this question and it's answer 帮了大忙。正如怀疑的那样,c:\users\&lt;my_username&gt;\Documents\IISExpress\Config\applicationhost.config 似乎无关紧要,因为 Azure 模拟器似乎生成了另一个不关心该文件的 IIS Express 实例。

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

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

      • 编辑 ServiceDefinition.csdef
      • 将以下内容添加到您的角色中(对我来说,这进入了&lt;Webrole&gt; ... &lt;/WebRole&gt;
      <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 => 属性 => 将“复制到输出目录”设置为“始终复制”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多