0

ワーカー ロールを使用して Web ロールにデータを提供し、Web ロールと [機密データを含む] データベースとの間の分離を維持する目的で、内部エンドポイントを介してワーカー ロールにリンクされた Azure Web ロールがあります。Worker ロールと Web ロールの両方によって参照される、必要なすべてのデータ コントラクトを含むクラス ライブラリ プロジェクトがあります。

開発環境では、すべて問題なく動作します。Azure にアップロードするとすぐに、ワーカー ロールの開始に失敗します。エラーメッセージは次のとおりです。

Message string  Failed with ExceptionSystem.IO.FileNotFoundException: Could not load file or assembly 'ReadOnly_DC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'ReadOnly_DC, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'
   at System.Signature.GetSignature(SignatureStruct& signature, Void* pCorSig, Int32 cCorSig, RuntimeFieldHandleInternal fieldHandle, IRuntimeMethodInfo methodHandle, RuntimeType declaringType)
   at System.Reflection.RuntimeMethodInfo.get_Signature()
   at System.Reflection.RuntimeMethodInfo.GetParameters()
   at System.ServiceModel.Description.ServiceReflector.ValidateParameterMetadata(MethodInfo methodInfo)
   at System.ServiceModel.Description.TypeLoader.CreateOperationDescriptions(ContractDescription contractDescription, ContractReflectionInfo reflectionInfo, Type contractToGetMethodsFrom, ContractDescription declaringContract, MessageDirection direction)
   at System.ServiceModel.Description.TypeLoader.CreateContractDescription(ServiceContractAttribute contractAttr, Type contractType, Type serviceType, ContractReflectionInfo& reflectionInfo, Object serviceImplementation)
   at System.ServiceModel.Description.TypeLoader.LoadContractDescriptionHelper(Type contractType, Type serviceType, Object serviceImplementation)
   at System.ServiceModel.Description.ContractDescription.GetContract(Type contractType, Type serviceType)
   at System.ServiceModel.ServiceHost.CreateDescription(IDictionary`2& implementedContracts)
   at System.ServiceModel.ServiceHostBase.InitializeDescription(UriSchemeKeyedCollection baseAddresses)
   at System.ServiceModel.ServiceHost..ctor(Type serviceType, Uri[] baseAddresses)
   at DA_Worker.WorkerRole.StartWS_Host() in C:\Users\grant.roy\Documents\Visual Studio 2010\Projects\CraigAzure\DA_Worker\WorkerRole.cs:line 80

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
; TraceSource 'WaWorkerHost.exe' event

データ コントラクト クラス ライブラリ「ReadOnly_DC」を開くことができないようです。

ReadOnly_DC への参照はローカルにコピーするように設定されており、データ コントラクト クラス ライブラリに付随するすべての参照で「ローカルにコピー」を試みましたが、役に立ちませんでした。

どんな提案もありがたく受け取りました!

許す

4

2 に答える 2

0

ソリューションエクスプローラーでワーカーロールプロジェクトを右クリックするときは、[プロジェクトの依存関係...]でクラスライブラリが選択されていることを確認してください。

于 2013-01-04T15:57:05.797 に答える
0

OK-これが答えだとは信じられませんが、これが私がそれを機能させた方法です。さまざまなクラス ライブラリからワーカー ロール プロジェクトにすべてのロジックを直接移動したところ、驚くことではありませんが、必要なさまざまなメソッドとデータ コントラクトが見つかり、ワーカー ロールが機能し始めました。

「共有」リソースを Web ロールと共有するために、必要なクラス [データ コントラクト、YubiKey クラス、および IWebService 自体] を、ソリューション エクスプローラーの「既存の項目を追加」機能を介して Web ロールに追加し、「ファイルのコピーを複製するのではなく、「リンク」を作成します。

したがって、これにより、インターネットに公開されている Web ロールから [非表示の] ワーカー ロール内のすべての機密情報 (接続文字列と共有ストレージ アクセス キー) の分離が維持されます。

于 2013-01-15T20:31:23.090 に答える