簡體   English   中英

如何更改ASP.NET ConnectionString =“<%$ ConnectionStrings:MyAppConnection%>”從Azure .cscfg文件工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM