Объект реализации службы не был инициализирован в CoreWcf

Пожалуйста, найдите ниже код для справки.

Startup.cs

открытый класс Startup {

          public void ConfigureServices(IServiceCollection services)
    {
        services.AddServiceModelServices().AddServiceModelConfigurationManagerFile("Web.config");
        services.AddServiceModelMetadata();
        
        services.AddSingleton<IServiceBehavior, UseRequestHeadersForMetadataAddressBehavior>();
     
        services.AddLogging(loggingBuilder =>
        {
            loggingBuilder.SetMinimumLevel(LogLevel.Information);
            loggingBuilder.AddApplicationInsights("xxxxxxxxxxx930939xxxx");
        });

        services.AddSingleton<ILoggingContractResolver, LoggingContractResolver>();


        IMapper mapper = SappoApiAutoMapperConfiguration.Configure().CreateMapper();

        services.AddSingleton<IMessageStoreFactory, AzureBlobMessageStoreFactory>();
        
        services.AddSingleton(mapper);
        services.AddSingleton(typeof(IOutboundSappoLogger<>), typeof(OutboundSappoLogger<>));
        services.AddSingleton<IBlobStorageSettingsHelper, BlobStorageSettingsHelper>();
        services.AddSingleton<IBlobClientFactory, BlobClientFactory>();
        services.AddSingleton<IServiceBusFactory>(ctx =>
        {
            return new ServiceBusFactory();
        });
        services.AddTransient<IShipperAsnService, ShipperAsnService>();
        services.AddHttpContextAccessor();


    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }


        app.UseServiceModel(serviceBuilder =>
        {
            serviceBuilder.AddService<ShipperAsnService>(serviceOptions =>
            {
                serviceOptions.DebugBehavior.IncludeExceptionDetailInFaults = true;

            }).AddServiceEndpoint<ShipperAsnService, IShipperAsnService>(new BasicHttpBinding(), "/ShipperAsnService.svc");
            serviceBuilder.ConfigureServiceHostBase<ShipperAsnService>(serviceHost =>
            {
                var behavior = serviceHost.Description.Behaviors.Find<ServiceBehaviorAttribute>();
                if (behavior == null)
                {
                    behavior = new ServiceBehaviorAttribute();
                    serviceHost.Description.Behaviors.Add(behavior);
                }
                behavior.InstanceContextMode = InstanceContextMode.Single;
                behavior.ConcurrencyMode = ConcurrencyMode.Multiple;
                behavior.IncludeExceptionDetailInFaults = true;
            });
           
        });
    }

}

IShipperAsnService.cs

[ServiceContract] открытый интерфейс IShipperAsnService { [OperationContract] [WebInvoke] Task ActionAsync(ShipperAsnRequest shipperBrnAsnRequest); }

ШипперАснсервице.cs

открытый класс ShipperAsnService: BaseShipperService<ShipperAsnRequest, OutboundShipperAsnServiceDto>, IShipperAsnService { public ShipperAsnService( IMessageStoreFactory messageStoreFactory, IServiceBusFactory serviceBusFactory, IMapper mapper, IOutboundSappoLogger log): base(messageStoreFactory, serviceBusFactory, mapper, DestinationApi.SAPPOAsn, log) {}

          public override async Task<ServiceResponse> ActionAsync(ShipperAsnRequest shipperBrnAsnRequest)
    {
        return await base.ActionAsync(shipperBrnAsnRequest);
    }
}[enter image description here](https://i.stack.imgur.com/iujoj.png)

Я изо всех сил пытаюсь это исправить. Я хочу решить эту проблему.

1 ответ

Я думаю, вы используете CoreWCF.

CoreWCF сначала попытается получить экземпляр службы WCF в DI, но Core WCF просто попытается получить его по типу службы. На этом этапе интерфейс службы не имеет значения. Поэтому, если вы добавите свою службу как .NET-способ, в контейнер DI, вы просто можете использовать интерфейс для получения экземпляра службы, но Core WCF получит значение null.

Как только Core WCF не сможет получить экземпляр службы по типу службы, он вернется к способу WCF с использованием конструктора без параметров.

См.: https://github.com/CoreWCF/CoreWCF/issues/533 .

Другие вопросы по тегам