异常: 尝试获取类型为Autoscaler的实例时出现激活错误,键“”
堆栈跟踪: 位于D:\ Windows Azure Cloud \ Samples \ Windows Azure HelloWorld Sample \ C#\ HelloWorld_WebRole \ WebRole.cs:第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()
内部例外: 依赖项的解析失败,type =“Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler”,name =“(none)”。 在解决时发生异常。
在例外时,容器是:
解决Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler,(无) 解析构造函数Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler(System.String dataPointsStoreStorageAccountConnectionString,System.String dataPointsTableName,System.TimeSpan ruleEvaluationRate,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Rules.IRulesStore rulesStore,Microsoft的参数“dataPointsStoreStorageAccountConnectionString” .Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.ServiceModel.IServiceInformationStore serviceInformationStore,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.DataPointsCollection.IDataPointsCollectorsProvider dataPointsCollectorsProvider,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.IExecutionLease executionLease,Microsoft.Practices.EnterpriseLibrary.WindowsAzure。 Autoscaling.Logging.ILogger logger,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Scaling.IServiceManagementRequestTracker tracker,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Au toscaling.Scaling.IScaler scaler) 解析System.String,(无)
来源: Microsoft.Practices.Unity
堆栈跟踪:
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t,Object existing,String name,IEnumerable 1 resolverOverrides)
at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable
1 resolverOverrides)
在Microsoft.Practices.Unity.UnityContainer.Resolve(Type t,String name,ResolverOverride [] resolverOverrides)
在Microsoft.Practices.Unity.UnityServiceLocator.DoGetInstance(类型serviceType,String key)
at c:\ Home \ Chris \ Projects \ CommonServiceLocator \ main \ Microsoft.Practices.ServiceLocation \ ServiceLocatorImplBase.cs中的Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(类型serviceType,String key):第49行
内部例外: 无法构造String类型。您必须配置容器以提供此值。
来源: Microsoft.Practices.Unity
堆栈跟踪: 在Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.GuardTypeIsNonPrimitive(IBuilderContext context,SelectedConstructor selectedConstructor) 在Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.PreBuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlanCreatorPolicy.CreatePlan(IBuilderContext context,NamedTypeBuildKey buildKey) 在Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey) 在Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context) 在BuildUp_Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler(IBuilderContext) 在Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context) 在Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context) 在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t,Object existing,String name,IEnumerable`1 resolverOverrides)
在过去的两天里,我已经遇到了这个例外,所以有人请帮助......
答案 0 :(得分:0)
最后,我找到了上述问题的解决方案,如下所示,
如果没有app.config在Web角色中使用RoleEntryPoint实现,许多人已经采用了众所周知的解决方法,就是在他们的项目中包含一个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。如果要将此文件添加到新项目,请不要忘记将“复制到输出目录”属性设置为“始终复制”。
以下链接是此解决方案的来源,