3

我们有一个要迁移到 Azure 的 ASP.NET(不是 MVC)应用程序。在许多页面中,我们有这样的代码:

<asp:SqlDataSource runat="server" ID="ResourcesDataSource" ConnectionString="<%$ ConnectionStrings:MyAppConnection %>"
    SelectCommand="usp_list_resources" SelectCommandType="StoredProcedure"></asp:SqlDataSource>

它从 web.config 中读取连接字符串。部署到 Azure 时,我希望在 .cscfg 文件中包含连接字符串,因此我们可以使用相同的 .cspkg 部署到不同的环境,而只需更改 .cscfg。Azure 相当于 using<%$ ConnectionStrings:MyAppConnection %>什么?

我可以浏览我的每个页面并在 Page_Init() 方法中设置数据源的 ConnectionString 属性,但我真的不想...声明式解决方案会更好,理想情况下可以使用 Find/Replace 来实现:)

谢谢!

4

1 回答 1

1

你想要的东西不是标准 Azure 工具的一部分。

很可能您应该构建自己的ExpressionBuilder。4guysfromrolla.com 上有一篇文章“在 ASP.NET 中使用表达式构建器”。它显示并解释了表达式构建器及其内部的核心概念。

快速搜索您的主题将我引向另一篇文章“ASP.NET Custom Expression Builder For 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>
于 2012-10-16T20:06:44.080 回答