2012-03-24 5 views
2

私はAzure/Cloudベースのプロジェクトを持っています(単一プロジェクトのみ)。プロジェクトにWCF/WebRoleが追加されています。私のWCFサービスは、エンティティフレームワークを使用してSQLAzureデータベースと通信しています。これはとてもうまくいっています。私のwebrole.csは接続文字列を見つけることができません

<connectionStrings> 
    <add name="CommuteEntities" connectionString="metadata=res://*/Db.CommuteDataModel.csdl|res://*/Db.CommuteDataModel.ssdl|res://*/Db.CommuteDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<db-here>.database.windows.net;initial catalog=dandr;persist security info=True;user id=<user-id-here>;password=<password-here>;multipleactiveresultsets=True;App=EntityFramework&quot; " providerName="System.Data.EntityClient" /> 
</connectionStrings> 

すべてのこれまでのところうまくだ:私は、次のしているプロジェクトのweb.configファイルで

。だから私はスケジュールされたバックグラウンド処理を(タイマーと着信要求に基づいて)少量行いたいと思っています。仕事に対するWorkerRoleの開始を正当化するには小さすぎるタスク。

だからではなく、私はWebRoleに次のようなものを作成した接続文字列を取得するためのラインがうまく動作していないよう何らかの理由WebRole.cs

public override void Run() 
{ 
    while (true) 
    { 
     //This is for debug purposes: 
     string str = ConfigurationManager.ConnectionStrings["CommuteEntities"].ToString(); 

     BackgroundProcessing.BackgroundProcessing.BackgroundProcess(); 
     Thread.Sleep(150000); //2.5mins 
    } 
} 

を投影します。ただし、同じコードをWCFサービスに組み込むことは効果的です。

このソリューションには1つのプロジェクトしかありません。WebRole.csは、動作中のWCFサービスと同じプロジェクトに配置されています。

:接続文字列を取得するのはデバッグのためです。

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

注2::私はちょうどそれがように思われることに気づいた私が持っている根本的な問題は、私のWebRole.csエンティティにアクセスしようとしたとき、それは次の例外メッセージを取得することです私のWebRole.csにあるものは、Web.configファイルで設定されたものは見えません。私が正しくやっていないことがあるのですか?

誰もがこれを前に出くわしたり、アイデアを持っていますか?

答えて

3

私は、次のファウル落ちたように見える:その答えからAzure web role process not loading web.config?

を:個人的なコミュニケーションから

@stevemarx - 「webrole.cs内のコードは、IISでWebアプリケーションから別のプロセスで実行されていますweb.configを開いて読み込めるようにする必要がありますが(現在のディレクトリにあるファイル)、.NETはweb.configに特別な処理を行いません(ファイルを置く実行中のコンソールアプリと同じディレクトリにweb.configという名前があります)。

Soいいえ、webrole.csプロセスのコードはweb.configをロードしません。

ここにいくつかの詳細情報:

http://laorient.blogspot.com/2011/06/windows-azure-webrolecs-is-not-running.html

+0

私はDamienと一緒です。また、クラウドサービスの設定にこのようなものを置くべきだと言っています。この移動によって、アプリケーションを再デプロイしなくても資格情報をローテーションできます。 – BrentDaCodeMonkey

0

シンプルかつ愚かな解決策はapp.configを追加し、そこに必要な設定を入れています。次に、Run()メソッドの内部から構成をロードします(db接続文字列など)。できます!

その他のサービス(サービスなど)はIISでホストされており、簡単にweb.configファイルの設定を読み込むことができます。

関連する問題