【问题标题】:Is there a way to programmatically set the connection string for ASP.NET Universal Providers?有没有办法以编程方式为 ASP.NET 通用提供程序设置连接字符串?
【发布时间】:2012-04-04 18:46:25
【问题描述】:

我希望为 Azure 部署一个使用 ASP.NET Universal Providers 的解决方案。我想将我的连接字符串存储在 Azure 配置而不是 web.config 中,这样我就可以在不重新部署的情况下更改它们。我曾考虑从设置加载并添加到 ConfigurationManager.ConnectionStrings 集合,但这是只读的。有一些反射技巧可以克服这个问题,但这似乎不是正确的方法。我还考虑从提供程序类派生来创建我自己的可以设置连接字符串的提供程序类,但我没有看到要设置的属性来覆盖连接字符串。关于使用提供程序但在我的 web.config 中没有连接字符串的任何想法?

【问题讨论】:

  • 使用ILSpy可以看到连接字符串是在Initialize方法中设置的,是私有属性。

标签: .net azure asp.net-membership


【解决方案1】:

我建议您将设置放在 Azure 配置文件中,然后编写启动任务或在 WebRole.cs OnStart 中,您可以访问 IIS 管理 API 并使用正确的连接字符串更新其中的 web.config 文件。这样您就不必以编程方式访问连接字符串,但仍然可以做您想做的事情。

您可以查看这篇博文,了解一些使用 API 的示例,尽管它并没有达到您想要的效果:

http://blogs.msdn.com/b/tom/archive/2011/02/18/installing-and-using-an-httpmodule-in-windows-azure.aspx

【讨论】:

  • 现在我正在考虑寻找源代码并进行所需的更改。我不知道 ASP Universal Provider 源是否可用,但 2.0 版本可用 (weblogs.asp.net/scottgu/archive/2006/04/13/442772.aspx) 或者我可能会调查一下:efmembership.codeplex.com
  • @Bryan - 你可以自己反编译 System.Web.Providers.dll。我使用的是免费的 Telerik JustDecompile。
  • 我有一个解决方案使用 Microsoft.Web.Administration API 在角色启动时使用我的 azure 配置文件中的值修改 Web 配置中的连接字符串,类似于这篇文章:blog.elastacloud.com/2011/05/13/… 我有以确保我提高了可能不理想的权限,因此我可能会在启动任务中编写代码,并且只提高启动任务的权限。
猜你喜欢
  • 1970-01-01
  • 2011-03-31
  • 1970-01-01
  • 2010-09-25
  • 2010-10-30
  • 2014-07-24
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多