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は、(私はサービス構成の間で構成設定を変えることができる唯一の方法です)サービス構成の設定を見ていないだろうとしてパッケージ化されているためです。
私はこれが問題である他の多くの例...
- 接続文字列の部分を直接見任意のデータ・アクセス・フレームワークと考えることができます。
- 作成する必要のあるカスタム設定。
...名前はちょうど2です。
私は何かが見つからないのですか、これはWindows Azureによって提供される構成管理に大きな差がありますか?これがうまくサポートされていないものをあるよう
答えと以下のコメントから
EDITは、それが見えます。さまざまな構成プロファイルをサポートするために複数のソリューションビルド構成を管理することは、非常に弱い解決策であると私は思います。必要な構成プロファイルごとにソリューションを再構築する必要はありません(かなりの数があります)。コンパイルは構成と同じではありません。
zipファイルのように.cspkgファイルを変更する方法があるのだろうかと思っていました。 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上)再計算ハッシュすることは簡単であることを示唆している次のように私の方法でした。
ハッシュを再計算する方法を知っている人はいますか?
でダイジェストを得ることができます。 –
これはうまくいかないでしょう - ELMAH(そして他のフレームワーク)は.cscfgに保持されている設定データを調べません。 –
私の知る限り、紺色パッケージの設定方法は.cscfgファイルのみです。 ELMAHのようなフレームワークでは、設定を動的に変更するなどの回避策を見つけなければならないかもしれません。しかし、私は、提供するはるかに良い答えがあるかもしれないStackoverflowに紺碧の多くの専門家がいると思います。また、これは非常に興味深く重要な質問です。 –