1

新しい ASP.NET ユニバーサル プロバイダーに関する Hanselman の投稿: http://www.hanselman.com/blog/IntroducingSystemWebProvidersASPNETUniversalProvidersForSessionMembershipRolesAndUserProfileOnSQLCompactAndSQLAzure.aspx

web.config ではなく、CSCFG ファイルの接続文字列を読み取るようにどのように構成しますか?

4

1 に答える 1

0

(web.config ではなく) ServiceConfiguration から Universal Providers を読み取らせることはできないと思います。ただし、アプリケーションをデプロイするたびに、または ServiceConfiguration を変更するたびに、ServiceConfiguration からの情報で web.config を変更することができます。

WebRole.cs では、最初にこれを行うコードを記述します。MSDNには、これを行う方法を説明するトピックがあります。

  • 昇格モードで実行
  • 参照 %WINDIR%\system32\inetsrv\Microsoft.Web.Administration.dll
  • これを OnStart メソッドに記述します (このコードを変更する必要があります)。

    using (var server = new ServerManager())
    {
        // get the site's web configuration
        var siteNameFromServiceModel = "Web"; // update this site name for your site. 
        var siteName =
            string.Format("{0}_{1}", RoleEnvironment.CurrentRoleInstance.Id, siteNameFromServiceModel);
        var siteConfig = server.Sites[siteName].GetWebConfiguration();
    
        // get the appSettings section
        var appSettings = siteConfig.GetSection("appSettings").GetCollection()
            .ToDictionary(e => (string)e["key"], e => (string)e["value"]);
    
        // reconfigure the machine key
        var machineKeySection = siteConfig.GetSection("system.web/machineKey");
        machineKeySection.SetAttributeValue("validationKey", appSettings["validationKey"]);
        machineKeySection.SetAttributeValue("validation", appSettings["validation"]);
        machineKeySection.SetAttributeValue("decryptionKey", appSettings["decryptionKey"]);
        machineKeySection.SetAttributeValue("decryption", appSettings["decryption"]);
    
        server.CommitChanges();
    }
    

このトピックで取り上げていないのは、ServiceConfiguration の変更です (再デプロイせずにポータルから接続文字列を変更したとします)。そのため、RoleEnvironment.Changingイベントを処理して、そのような変更の構成を更新する必要もあります (ここでインスタンスの再起動を防ぐこともできます)。

于 2012-08-01T04:02:40.630 に答える