0

异常: 尝试获取 Autoscaler 类型的实例时发生激活错误,键“”

堆栈跟踪: 在 D:\Windows Azure Cloud\Samples\Windows Azure HelloWorld Sample\C#\HelloWorld_WebRole\WebRole.cs: 中的 IUSCRM.WebRole.OnStart() 处:Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRoleInternal(RoleType roleTypeEnum) 的第 43 行在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeRole(RoleType roleType) 在 Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__0()

内部异常: 依赖项解析失败,类型 =“Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler”,名称 =“(无)”。异常发生时:解决时。

异常是: InvalidOperationException - 无法构造类型 String。您必须配置容器以提供此值。

在异常发生时,容器是:

解析 Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler,(无)解析构造函数 Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler 的参数“dataPointsStoreStorageAccountConnectionString”(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.IDataPointsCollectorsProvider dataPointsCollectorsProvider、Microsoft.Practices.EnterpriseLibrary .WindowsAzure.Autoscaling.IExecutionLease executionLease, Microsoft。Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Logging.ILogger 记录器,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Scaling.IServiceManagementRequestTracker 跟踪器,Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Scaling.IScaler 缩放器)解析 System.String,(无)

来源: Microsoft.Practices.Unity

堆栈跟踪: 在 Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides) 的 Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable 1 resolverOverrides) at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable1 resolverOverrides) Microsoft.Practices.Unity.UnityServiceLocator.DoGetInstance(Type serviceType, String key) 在 Microsoft.Practices.ServiceLocation.ServiceLocatorImplBase.GetInstance(Type serviceType, String key) 在 c:\Home\Chris\Projects\CommonServiceLocator\main\Microsoft.Practices .ServiceLocation\ServiceLocatorImplBase.cs:第 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) at BuildUp_Microsoft.Practices.EnterpriseLibrary.WindowsAzure.Autoscaling.Autoscaler(IBuilderContext ) at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context) at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)在 Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext 上下文)在 Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型 t,现有对象,字符串名称,IEnumerable`1 resolverOverrides)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)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)

在过去的两天里,我遇到了这个例外,所以请有人帮忙......

4

1 回答 1

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 的解决方法,供那些可能遇到此问题的人使用。在某些情况下,例如某些第 3 方依赖项会阻止我们将所有配置设置移动到 .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 回答