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