标签: corewcf

如何返回自定义http状态代码CoreWCF?

我正在接管一个遗留的 SOAP 项目,我需要用 .NET Core 解决方案替换 SOAP 服务。我们不能更改 SOAP 客户端,因此我们不能查看 REST、GRPC 等。我查看了 SoapCore 和 CoreWCF,并且都使用 SOAP 标头用户名/密码身份验证演示,但是,我将使用 CoreWCF暂时。

现有的SOAP服务使用自定义的http状态码响应,例如在服务处理完成后以及在某些情况下出现SOAP错误时返回202。我意识到这是不正确的,但是,我们需要维护现有的业务逻辑。

我的问题是:

  1. 如何将我的服务配置为在服务完成后或满足特定条件时响应 http 状态代码 202?IsOneWay=True OperationContract 将不起作用,因为它会立即返回。
  2. 如何配置 SOAP 错误以使用自定义 http 状态代码进行响应?

有许多旧的 SO 帖子提到 WebOperationContext,但是,我似乎无法在我的服务中访问它。OperationContext 似乎无法控制 HttpStatusCode。也许我错过了一些东西。IE:

WebOperationContext ctx = WebOperationContext.Current;
ctx.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.BadRequest;
Run Code Online (Sandbox Code Playgroud)

这是我的示例项目细分:

程序.cs

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
using System.Diagnostics;

namespace CoreWcf.Samples.Http
{
    public class Program
    {
        public const int HTTP_PORT = 8088;
        public const int HTTPS_PORT = 8443;

        static void Main(string[] args)
        { …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf soap corewcf

3
推荐指数
1
解决办法
765
查看次数

服务实现对象未在 CoreWcf 中初始化

我收到以下错误消息

服务实现对象未初始化或不可用。 at CoreWCF.Dispatcher.TaskMethodInvoker.InvokeAsync(Object instance, Object[] input) at CoreWCF.Dispatcher.DispatchOperationRuntime.<>c__DisplayClass71_0.<<InvokeAsync>b__0>d.MoveNext() --- 从上一个位置开始的堆栈跟踪结束 - -- 在 CoreWCF.Dispatcher.DispatchOperationRuntime.InvokeAsync(MessageRpc rpc)

请找到以下代码供您参考。

启动.cs

public class 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 => …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core .net-6.0 corewcf

2
推荐指数
1
解决办法
1521
查看次数

标签 统计

c# ×2

corewcf ×2

.net ×1

.net-6.0 ×1

asp.net-core ×1

soap ×1

wcf ×1