2015-12-15 78 views
0

我使用Visual Studio 2015 Update 1创建了一个由Azure AD保护的简单ASP.NET MVC应用程序,并在本地测试了它,其中一切正常。然后,我将它部署到Azure网站,在验证后,应用程序失败,因为它表示我正在使用“无效的客户端密钥”。经过很多调试后,我发现出于某种原因,当应用上传到Azure时,web.config中的ClientId发生了变化。我使用Azure中的SCM工具进入并手动编辑我的web.config文件,使其符合我在源代码中的所有内容,现在一切正常。将ASP.NET站点发布到Azure更改Web.Config中的ClientId

任何人都看到了这个......它是一个已知的问题吗?我现在正在工作,但想要解决它,所以我不需要在将来手动调整web.config。

史蒂夫

+0

如果您发布到本地文件系统会发生什么?你的web.config会更改为部署到Azure App Service吗? –

+0

@Steve Peschka:你把任何转换逻辑放在web.release.config里面吗? –

+0

嗨小敏,web.config不会改变,如果我发布到本地文件系统。 Kienct89,我的调试或发布配置中没有任何转换逻辑。我刚刚再次发布到Azure应用服务,但它又将错误的值放在那里。 –

回答

2

我发现这个问题。错误的ClientId和ClientSecret位于发布配置文件中,即“My Publishing Profile.pubxml”。我不知道它从哪里得到这些值,因为我从来没有提供过它们。尽管我有一个理论......我只是将应用程序从4.52改为针对.NET 4.61。我注意到,当我定位4.52时运行发布向导时,向导包含一个默认选中的框,显示“启用组织认证”。我最好的猜测是,也许通过检查它会自动在Azure AD中创建一个新的应用程序定义,并使用客户端ID和密码。只是一个猜测,试图解释未知。

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

0

如果您发布过程中变换使用没有,有在Azure的部署,可以改变你的web.config文件中没有逻辑。所以其他的东西必须在玩。

我建议将repro应用程序隔离为小而没有敏感位的东西,以便您可以在GitHub上共享它以供进一步调查。而且,在这样做的过程中,您可能能够确定问题的根源。