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 は何<%$ ConnectionStrings:MyAppConnection %>ですか?

各ページを調べて、Page_Init() メソッドでデータソースの ConnectionString プロパティを設定することもできますが、実際にはそうしたくありません... 宣言的なソリューションの方が優れていて、理想的には検索/置換で実装できるソリューションです。 :)

ありがとう!

4

1 に答える 1

1

必要なものは、標準の Azure ツールの一部ではありません。

ほとんどの場合、独自のExpressionBuilderを構築する必要があります。4guysfromrolla.com に「ASP.NET で式ビルダーを使用する」という記事があります。式ビルダーとその内部の中心的な概念を示して説明します。

あなたのトピックを簡単に検索すると、別の記事「Azure 用 ASP.NET カスタム式ビルダー」にたどり着きました。これが問題の解決に役立つことを願っています。

上記のリンクが利用できない場合のコードは次のとおりです。

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 に答える