[英]How to change ASP.NET ConnectionString=“<%$ ConnectionStrings:MyAppConnection %>” to work from Azure .cscfg file
我们有一个ASP.NET(而不是MVC)应用程序,我们正在迁移到Azure。 在许多页面中,我们有这样的代码:
<asp:SqlDataSource runat="server" ID="ResourcesDataSource" ConnectionString="<%$ ConnectionStrings:MyAppConnection %>"
SelectCommand="usp_list_resources" SelectCommandType="StoredProcedure"></asp:SqlDataSource>
其中从web.config读取connectionstring。 部署到Azure时,我希望在.cscfg文件中包含连接字符串,因此我们可以使用相同的.cspkg部署到不同的环境,只更改.cscfg。 什么是Azure相当于使用<%$ ConnectionStrings:MyAppConnection %>
?
我可以遍历每个页面并在Page_Init()方法中设置数据源的ConnectionString属性,但我真的不愿意......声明性解决方案会更好,理想情况下可以通过查找/替换实现:)
谢谢!
您想要的不是标准Azure工具的一部分。
最有可能你应该构建自己的ExpressionBuilder 。 有一篇关于4guysfromrolla.com “在ASP.NET中使用Expression Builders”的文章 。 它显示并解释了表达式构建器及其内部的核心概念。
快速搜索您的主题会引导我阅读另一篇文章“ASP.NET自定义表达式构建器的Azure” 。 希望这可以帮助您解决问题。
如果上面的链接不可用,这里有一个代码:
using System.CodeDom;
using System.Web.Compilation;
using System.Web.UI;
using Microsoft.WindowsAzure.ServiceRuntime;
public class AzureSettingsExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry, object parsedData, ExpressionBuilderContext context)
{
return new CodePrimitiveExpression(RoleEnvironment.GetConfigurationSettingValue(entry.Expression));
}
}
在web.config
注册表达式构建器:
<compilation>
<expressionBuilders>
<add expressionPrefix="AzureSettings" type="AzureSettingsExpressionBuilder"/>
</expressionBuilders>
</compilation>
更新的aspx标记:
<asp:SqlDataSource runat="server" ID="ResourcesDataSource"
ConnectionString="<%$ AzureSettings:MyConnectionString %>"
SelectCommand="usp_list_resources"
SelectCommandType="StoredProcedure">
</asp:SqlDataSource>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.