2015-12-15 82 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上共享它以供進一步調查。而且,在這樣做的過程中,您可能能夠確定問題的根源。