Shi*_*mmy 9 c# connection-string web-config azure
我在Azure管理门户配置 - >连接字符串(链接资源)中配置了连接字符串:
这些连接字符串对什么有用?
我试着删除conn.来自web.config文件的字符串,所以应该从这里读取,但事实并非如此.
还有其他方法吗?
基本上我希望这些连接字符串覆盖web.config中的连接字符串以在生产环境中使用.
我在方法中添加了以下内容Application_Start:
var sb = new StringBuilder();
var appConfig = ConfigurationManager.OpenMachineConfiguration();
foreach (ConnectionStringSettings conStr in appConfig.ConnectionStrings.ConnectionStrings)
sb.AppendFormat("Name: {0}, ConnectionString: {1}\n", conStr.Name, conStr.ConnectionString);
throw new Exception(sb.ToString());
Run Code Online (Sandbox Code Playgroud)
这是结果:
名称:LocalSqlServer,ConnectionString:data source =.\ SQLEXPRESS; Integrated Security = SSPI; AttachDBFilename = | DataDirectory | aspnetdb.mdf; User Instance = true
我也尝试了以上,ConfigurationManager.ConnectionStrings服务器(Azure)连接字符串不存在.
San*_*tia 12
Portal中的连接字符串允许您覆盖web.config中定义的连接字符串.
当您在本地开发时,您可能使用位于localhost\SQLExpress中的数据库或类似的东西.如果在未设置web.config转换的情况下进行部署,则意味着在Windows Azure中运行的Web站点仍将指向localhost\SQLExpress,这不是您想要的.
Portal中的连接字符串允许您覆盖已在web.config中定义的现有连接字符串.如果您的web.config不包含与门户网站中配置的连接字符串同名的连接字符串,则不会添加该字符串并且可以在运行时访问它.这可能是您遇到的问题.
要解决此问题,只需在web.config文件中添加一个连接字符串,其名称与已添加到门户网站的名称相同.
更新:就像我在评论中已经解释的那样,Windows Azure网站不会物理修改web.config(源代码),而是在运行时执行此操作.因此,为了检查运行时实际可用的AppSettings和ConnectionStrings,请尝试以下方法:
控制器:
public ActionResult Index()
{
ViewBag.ConnectionStrings =
ConfigurationManager.ConnectionStrings.Cast<ConnectionStringSettings>();
ViewBag.AppSettings = ConfigurationManager.AppSettings;
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图:
<h3>ConnectionStrings:</h3>
<ul>
@foreach (var setting in ViewBag.ConnectionStrings)
{
<li>@setting.Name: @setting.ConnectionString</li>
}
</ul>
<h3>AppSettings:</h3>
<ul>
@foreach (var s in ViewBag.AppSettings)
{
<li>@setting: @System.Configuration.ConfigurationManager.AppSettings[s]</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)