0
votes

I've create a Project which Host WCF Services it is with EF 6.1 , DevArt Oracle Connector, Unit. I'm able to run this project And Ny *.svc URL is also working. Now I Tried to Use this service in my Prism 4.1 Silverlight Project This is also communicating with this wcf project.

But when I try to get data in 1 module of my App I'm getting this error:

Please guide where I'm going wrong?

Error

 Microsoft.Practices.Unity.ResolutionFailedException was unhandled by user code
 HResult=-2146233088
 Message=Resolution of the dependency failed, type = "Abs.Web.DomainServices.UserWcfService", name = "(none)".
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type,  System.Collections.Generic.IDictionary`2[System.Type,System.Func`2[System.Data.Entity.DbContext,System.Object]], is an interface and cannot be constructed. Are you missing a type mapping?
-----------------------------------------------
At the time of the exception, the container was:

 Resolving Abs.Web.DomainServices.UserWcfService,(none)
Resolving parameter "Uw" of constructor Abs.Web.DomainServices.UserWcfService(Abs.Data.Contracts.IAbsDataRepoositoryWorkUnit Uw)
  Resolving Abs.Data.AbsDataRepoositoryWorkUnit,(none) (mapped from Abs.Data.Contracts.IAbsDataRepoositoryWorkUnit, (none))
Resolving parameter "repositoryProvider" of constructor Abs.Data.AbsDataRepoositoryWorkUnit(Abs.Data.Helpers.IRepositoryProvider repositoryProvider)
  Resolving Abs.Data.Helpers.RepositoryProvider,(none) (mapped from Abs.Data.Helpers.IRepositoryProvider, (none))
  Resolving parameter "repositoryFactories" of constructor Abs.Data.Helpers.RepositoryProvider(Abs.Data.Helpers.RepositoryFactories repositoryFactories)
    Resolving Abs.Data.Helpers.RepositoryFactories,(none)
    Resolving parameter "factories" of constructor Abs.Data.Helpers.RepositoryFactories(System.Collections.Generic.IDictionary`2[[System.Type, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Func`2[[System.Data.Entity.DbContext, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]] factories)
      Resolving System.Collections.Generic.IDictionary`2[System.Type,System.Func`2[System.Data.Entity.DbContext,System.Object]],(none)

 Source=Microsoft.Practices.Unity
TypeRequested=UserWcfService
StackTrace:
   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)
   at Microsoft.Practices.Unity.UnityContainer.Resolve(Type t, String name, ResolverOverride[] resolverOverrides)
   at Microsoft.Practices.Unity.UnityContainerExtensions.Resolve(IUnityContainer container, Type t, ResolverOverride[] overrides)
   at Abs.Web.Ioc.UnityInstanceProvider.GetInstance(InstanceContext instanceContext, Message message) in d:\ProjectAbsWork\Abs.Web\Ioc\UnityInstanceProvider.cs:line 29
   at System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request)
   at System.ServiceModel.InstanceContext.GetServiceInstance(Message message)
   at System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc)
   at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
   InnerException: System.InvalidOperationException
   HResult=-2146233079
   Message=The current type, System.Collections.Generic.IDictionary`2[System.Type,System.Func`2[System.Data.Entity.DbContext,System.Object]], is an interface and cannot be constructed. Are you missing a type mapping?
   Source=Microsoft.Practices.Unity
   StackTrace:
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodConstructorStrategy.ThrowForAttemptingToConstructInterface(IBuilderContext context)
        at lambda_method(Closure , IBuilderContext )
        at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey)
        at Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)
        at lambda_method(Closure , IBuilderContext )
        at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey)
        at Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)
        at lambda_method(Closure , IBuilderContext )
        at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey)
        at Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)
        at lambda_method(Closure , IBuilderContext )
        at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuilderContext.NewBuildUp(NamedTypeBuildKey newBuildKey)
        at Microsoft.Practices.Unity.ObjectBuilder.NamedTypeDependencyResolverPolicy.Resolve(IBuilderContext context)
        at lambda_method(Closure , IBuilderContext )
        at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.DynamicMethodBuildPlan.BuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
        at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
        at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
   InnerException: 

This I copied from from UnityInstanceProvide : IInstanceProvider Class followed this eg: http://jamesheppinstall.wordpress.com/2012/06/20/windows-communication-foundation-resolving-wcf-service-dependencies-with-unity/

   public object GetInstance(InstanceContext instanceContext, Message message)
      {
        return Container.Resolve(ServiceType);
    }

when I Prism Module Try to Load data from the WCF Hosted Project.

and at Prism UI project I'm getting

  System.TimeoutException was unhandled by user code
  Message=The HTTP request to 'http://localhost:62269/DomainServices/UserWcfService.svc' has exceeded the allotted timeout. The time allotted to this operation may have been a portion of a longer timeout.
  StackTrace:
   at System.ServiceModel.Channels.Remoting.RealProxy.Invoke(Object[] args)
   at proxy_2.EndgetAllUser(IAsyncResult )
   at Abs.Tabtest.ViewModel.TabViewModel._AlUserCallBack(IAsyncResult ar)
   at System.ServiceModel.AsyncResult.Complete(Boolean completedSynchronously)

  InnerException: System.Net.WebException
   Message=""
   StackTrace:
        at System.Net.Browser.AsyncHelper.BeginOnUI(SendOrPostCallback beginMethod, Object state)
        at System.Net.Browser.BrowserHttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
        at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelAsyncRequest.CompleteGetResponse(IAsyncResult result)
   InnerException: System.Net.WebException
        Message=""
        StackTrace:
             at System.Net.Browser.BrowserHttpWebRequest.InternalEndGetResponse(IAsyncResult asyncResult)
             at System.Net.Browser.BrowserHttpWebRequest.<>c__DisplayClassa.<EndGetResponse>b__9(Object sendState)
             at System.Net.Browser.AsyncHelper.<>c__DisplayClass4.<BeginOnUI>b__0(Object sendState)
        InnerException: 

My Module Code is Like this : For Registering the Service In module.

   this.container.RegisterType<UserWcfService>(
            new ContainerControlledLifetimeManager(),
            new InjectionFactory(
                (c) => new ChannelFactory<UserWcfService>("CustomBinding_UserWcfService").CreateChannel()));

And in ViewModel Use :

    IEventAggregator _eventAggregator;
    UserWcfService _Userservice;
    public TabViewModel(ITabView view, IEventAggregator eventAggregator , UserWcfService service)
        : base(view)
    {
        _eventAggregator = eventAggregator;
        _Userservice = service;
       // var evt = _eventAggregator.GetEvent<UserUpdatedEvent>();
        //    if(evt!=null )evt.Subscribe(UserUpdatedJob);
        ButtonLabelText = "Holy Cow !!";
      _Userservice.BegingetAllUser(_AlUserCallBack, null);
    }
    public object asyncState { get; set; }

    private void _AlUserCallBack(IAsyncResult ar)
    {
        var a=_Userservice.EndgetAllUser(ar);
        _UserDetailsDataGridContext = a;
    }

Don't know where I'm Going wrong.

1

1 Answers

0
votes

This is the type that's messing it up for you: Abs.Data.Helpers.RepositoryFactories. It has a constructor parameter of IDictionary<Type,Func<DbContext,Object>>. You need to map this interface to an implementation in order for Unity to resolve the dependency graph.