将 ASP.NET 站点发布到 Azure 更改 Web.Config 中的 ClientId

Publishing ASP.NET Site to Azure Changes ClientId in Web.Config

我使用 Visual Studio 2015 Update 1 创建了一个简单的 ASP.NET MVC 应用程序,该应用程序受 Azure AD 保护并在本地进行了测试,一切正常。然后我将它部署到一个 Azure 网站,在验证后应用程序失败,因为它说我正在使用 "invalid client secret"。经过多次调试后,我发现由于某种原因,当应用程序上传到 Azure 时,web.config 中的 ClientId 发生了变化。我使用 Azure 中的 SCM 工具进入并手动将我的 web.config 文件编辑为源代码中的内容,现在一切正常。

有人看到这个...这是一个已知问题吗?我现在正在工作,但想修复它,这样我以后就不必手动调整 web.config。

史蒂夫

如果您在发布期间没有使用转换,则 Azure 部署中没有逻辑可以更改您的 web.config 文件。所以必须有其他因素在起作用。

我建议将 repro 应用程序隔离成一些小的且没有敏感位的东西,这样您就可以在 GitHub 上分享它以供进一步调查。另外,在这样做的过程中,您也许可以找出问题的根源。

我发现了这个问题。错误的 ClientId 和 ClientSecret 在发布配置文件中,即 "My Publishing Profile.pubxml"。我不知道它从哪里得到这些值,因为我从未提供过它们。不过我有一个理论……我只是将应用程序从 4.52 更改为以 .NET 4.61 为目标。我注意到当我 运行 发布向导时以 4.52 为目标,该向导包含一个默认选中的框,上面写着 "Enable Organizational Authentication"。我最好的猜测是,也许通过检查它会自动在 Azure AD 中创建一个新的应用程序定义并为其使用客户端 ID 和密码。只是一个猜测,试图解释未知。

虽然修复只是更改 pubxml 文件以匹配 web.config 中的内容,并且 - shazaam - 一切正常。