當您別無選擇,只能在web.config(或app.config)中保存配置設置時,我看不到Windows Azure如何更改應用程序的配置。Azure角色配置管理
例如...
常常項目將利用第三方庫,使大量使用的web.config的。 web.config的使用可能涉及連接字符串,應用程序設置或自定義配置部分。 ELMAH就是一個很好的例子。對於ELMAH web.config文件看起來像下面這樣:
<configuration>
<configSections>
<sectionGroup name="elmah">
<section name="security" requirePermission="false" type="Elmah.SecuritySectionHandler, Elmah" />
<section name="errorLog" requirePermission="false" type="Elmah.ErrorLogSectionHandler, Elmah" />
</sectionGroup>
</configSections>
<connectionStrings>
<add
name="MyElmahDatabase"
providerName="System.Data.SqlClient"
connectionString="Server=tcp:myServer.database.windows.net,1433;Database=myDB;User [email protected];Password=password;Trusted_Connection=False;Encrypt=True;Connection Timeout=30" />
</connectionStrings>
<elmah>
<security allowRemoteAccess="1" />
<errorLog type="Elmah.SqlErrorLog, Elmah" connectionStringName="MyElmahDatabase" />
</elmah>
</configuration>
有幾個問題在這裏:
有沒有辦法對我來說,更新或改變遠程訪問是否啓用服務配置之間。
我無法更新或更改服務配置之間的ELMAH連接字符串。
這是因爲在web.config中被打包爲是進入.cspkg文件ELMAH不會看服務配置設置(這是我可以改變服務配置之間的配置設置的唯一方法)。
我能想到的許多其他例子,其中這是一個問題......
- 任何直接在連接字符串節觀看數據訪問框架。
- 我需要創建的任何自定義配置設置。
...僅舉兩個例子。
我錯過了什麼,或者這是Windows Azure提供的配置管理中的一個重大缺口?
編輯
從答案,下面的評論,它看起來像這樣的東西是不能很好的支持。我認爲管理多個解決方案構建配置以支持不同的配置文件是一個非常薄弱的解決方案。我不應該爲我需要的每個配置文件重新構建解決方案(可能會有很多)。編譯不等於配置。
我想知道是否有辦法修改.cspkg文件,因爲它只是一個zip文件。根據this文檔,你可以在Linux上。
我看了清單中.cspkg文件,它看起來像這樣:
<PackageManifest version="2">
<Encryption keytype="1" />
<Contents hashtype="1">
<Item name="MyApp.Web.UI_<GUID>.cssx" hash="AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2" uri="/MyApp.Web.UI_<GUID>.cssx" />
<Item name="MyApp.Web.Services_<GUID>.cssx" hash="7AC81AFF642E4345173C8470C32A41118A4E3CFD4185B82D0ADA44B71057192D" uri="/MyApp.Web.Services_<GUID>.cssx" />
<Item name="SMPackage_<GUID>.csmx" hash="B5E6B83B62AF64C7C11CAC1A394ABBF15D7DB7667A773C5284CE5BE95C5834E9" uri="/SMPackage_<GUID>.csmx" />
<Item name="SDPackage_<GUID>.csdx" hash="F34B7C02A551D82BAD96881E2DA9447D0014D49B47CCB3840475BDC575234A7D" uri="/SDPackage_<GUID>.csdx" />
<Item name="NamedStreamPackage_<GUID>.csnsx" hash="FA2B5829FF5D9B2D69DCDDB0E5BDEE6B8B0BC09FFBF37DAEEE41CF3F3F4D0132" uri="/NamedStreamPackage_<GUID>.csnsx" />
</Contents>
<NamedStreams>
<Stream name="RequiredFeatures/MyApp.Web.Services/1.0" />
<Stream name="RequiredFeatures/MyApp.Web.UI/1.0" />
<Stream name="SupportData/MyApp.Web.Services/1.0" />
<Stream name="SupportData/MyApp.Web.UI/1.0" />
</NamedStreams>
</PackageManifest>
不幸的是,如果我重新計算不變「MyApp.Web.UI_.cssx」的哈希文件,我的散列不同於清單中的散列。從清單
哈希:AED69299C5F89E060876BC16BD3D6DE5130F6E62FFD2B752BAF293435339B7E2
我計算出的哈希:E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855
請注意,我還沒有更改的文件,所以哈希應該是相同的。
這表明我計算錯了。我的方法如下:
class Program
{
static void Main(string[] args)
{
using (FileStream fs = new FileStream(args[0], FileMode.Open))
{
ComputeHash(new SHA256Managed(), fs);
}
}
private static void ComputeHash(HashAlgorithm hashAlgorithm, Stream stream)
{
byte[] hash = hashAlgorithm.ComputeHash(stream);
string hashString = BitConverter.ToString(hash);
Console.WriteLine(hashString.Replace("-", string.Empty));
Console.WriteLine();
}
}
上面的文檔鏈接,表明它是直接重新計算散列(無論在Linux上)。
有誰知道如何重新計算哈希值?
可以使用.cscfg文件,爲您包的任何配置屬性得到消化。 – 2012-07-18 10:30:28
這不起作用 - ELMAH(和其他框架)不會查看保存在.cscfg中的配置數據。 – 2012-07-18 14:40:26
據我所知,只有可能的azure軟件包配置方法是.cscfg文件。對於像ELMAH這樣的框架,您可能需要找到一種解決方法,例如動態更改配置。但我認爲在Stackoverflow上有很多azure專家可能有更好的答案。這也是一個非常有趣和重要的問題。 – 2012-07-18 17:05:21