0

例外: タイプ オートスケーラー、キー "" のインスタンスを取得しようとしているときにアクティベーション エラーが発生しました

スタック トレース: D:\Windows Azure Cloud\Samples\Windows Azure HelloWorld Sample\C#\HelloWorld_WebRole\WebRole.cs:line 43 の IUSCRM.WebRole.OnStart(): Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum) Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRole (RoleType roleType) で Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0() で

内部例外: 依存関係の解決に失敗しました。タイプ = "Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler"、名前 = "(none)"。例外が発生しました: 解決中。

例外: InvalidOperationException - String 型を構築できません。この値を提供するようにコンテナーを構成する必要があります。

例外発生時のコンテナは次のとおりでした。

Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler を解決しています (none) コンストラクターのパラメーター "dataPointsStoreStorageAccountConnectionString" を解決しています Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler(System.String dataPointsStoreStorageAccountConnectionString, System.String dataPointsTableName, System.TimeSpan ruleEvaluationRate, Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Rules.IRulesStore rulesStore、Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.ServiceModel.IServiceInformationStore serviceInformationStore、Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.DataPointsCollection.IDataPointsCollectorProvider dataPointsCollectorsProvider、Microsoft.Practices.EnterpriseLibrary .WindowsAzure.Autoscaling.IExecutionLease 実行リース、Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Logging.ILogger ロガー、Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Scaling.IServiceManagementRequestTracker トラッカー、Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Scaling.IScaler スケーラー) Resolving System.String,(none )

ソース: Microsoft.Practices.Unity

スタック トレース: Microsoft.Practices.Unity.UnityContainer.DoBuildUp (型 t、オブジェクトの存在、文字列名、IEnumerable 1 resolverOverrides) at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable1 resolverOverrides) で Microsoft.Practices.Unity.UnityContainer.Resolve (型 t、文字列名、ResolverOverride[] resolverOverrides) でc:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices の Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance (型 serviceType、文字列キー) の Microsoft.Practices.Unity.UnityServiceLocator.DoGetInstance (型 serviceType、文字列キー) .ServiceLocation\ServiceLocatorImplBase.cs:49行目

内部例外: String 型を構築できません。この値を提供するようにコンテナーを構成する必要があります。

ソース: Microsoft.Practices.Unity

スタックトレース: Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.GuardTypeIsNonPrimitive (IBuilderContext コンテキスト、SelectedConstructor selectedConstructor) で Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.PreBuildUp (IBuilderContext コンテキスト) で Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext コンテキスト) で Microsoft.Practices で。 Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext コンテキスト) の Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext コンテキスト) の Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp の ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan(IBuilderContext コンテキスト、NamedTypeBuildKey buildKey) (NamedTypeBuildKey newBuildKey) Microsoft.Practices.Unity.ObjectBuilder で。Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext コンテキスト) での BuildUp_Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler(IBuilderContext ) での NamedTypeDependencyResolverPolicy.Resolve (IBuilderContext コンテキスト) (IBuilderContext コンテキスト) Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp (IBuilderContext コンテキスト) で Microsoft.Practices.Unity.UnityContainer.DoBuildUp (タイプ t、オブジェクトの存在、文字列名、IEnumerable`1 resolverOverrides)Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext コンテキスト) Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext コンテキスト) Microsoft.Practices.Unity.UnityContainer.DoBuildUp(型 t、オブジェクトの存在、文字列名、IEnumerable`1 resolverOverrides)Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext コンテキスト) Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext コンテキスト) Microsoft.Practices.Unity.UnityContainer.DoBuildUp(型 t、オブジェクトの存在、文字列名、IEnumerable`1 resolverOverrides)

過去2日間、私はこの例外に悩まされていたので、誰か助けてください...

4

1 に答える 1

0

最後に、上記の質問に対する解決策を次のように見つけました。

Web ロールの RoleEntryPoint 実装で動作する app.config がない場合、多くの人が取ったよく知られた回避策は、プロジェクトに WaIISHost.exe.config ファイルを含めることです。このアプローチの背景と内部の詳細については、こちらを参照してください。このアプローチを使用していて、Windows Azure SDK の最新バージョンであるバージョン 1.8 に移行した場合、これが以前のバージョンのように機能しなくなっていることに気付いたかもしれません。

最近、このアプローチを使用している一部のお客様が Windows Azure SDK 1.8 に移行しましたが、WaIISHost.exe.config のアプリケーション設定が RoleEntryPoint 実装で実行されているコードで使用できなくなっていることがわかりました。いいえ、プロセス名は変更されていません。変更が確認された詳細については、後で詳しく説明します。今のところ、SDK 1.8 で動作する別の回避策を提供したいと思います。これに遭遇した可能性がある人向けです。すべての構成設定を .cscfg に、またはコードに移動することを妨げるサード パーティの依存関係などの状況があり、実際にはそこにある必要のない設定もあります。

回避策。それは実際には非常に簡単です。

基本的に、WaIISHost.exe.config の名前を、Web プロジェクトの RoleEntryPoint 実装を含む出力アセンブリの名前に変更し、もちろん .config 拡張子を追加します。そのため、"MyApp.Web" という名前の Web アプリケーション プロジェクトと "MyApp.Web" というアセンブリ名の場合、WaIISHost.exe.config の名前を MyApp.Web.dll.config に変更しました。このファイルを新しいプロジェクトに追加する場合は、「出力ディレクトリにコピー」プロパティを「常にコピー」に設定することを忘れないでください。

次のリンクは、このソリューションのソースです。

http://www.fullscale180.com/post/2012/11/08/WaIISHostexeconfig-in-Web-Roles-does-not-work-in-Windows-Azure-SDK-18.aspx

于 2013-01-25T07:36:16.847 に答える