使用 ASP.NET Core 6 的 Soap 端点

问题描述 投票:0回答:1

目前我只使用 REST 并直接在控制器中设置端点。

例如:

[HttpGet("someEndpoint")]   

现在我必须使用 SOAP,并且我正在尝试在我的

Program.cs
中设置端点(参见屏幕截图)。我总是收到
BasicHttpBinding()
的错误。

我的问题:我必须在控制器中设置端点吗?与我使用普通 REST API 执行此操作的方式相同吗?我在互联网上没有找到这个问题的答案。提前非常感谢您。

(我的母语是德语,对不起我的英语:))

Error

编辑:代码:

using SoapCore;
using System.ServiceModel;
using WebAPI_2023.Models;
using WebAPI_2023.Services;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddSoapCore();
builder.Services.AddScoped<CalculatorService>();
builder.Services.AddSingleton<ISampleService, SampleService>();
builder.Services.AddControllers();

builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();

var app = builder.Build();

app.UseSoapEndpoint<ISampleService>("/Service.asmx", new 
BasicHttpBinding(), SoapSerializer.XmlSerializer);

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();
app.UseAuthorization();
app.MapControllers();

app.Run();

编辑2:我发现了我的错误。现在它完美运行了:)

 app.UseEndpoints(endpoints =>
{
endpoints.UseSoapEndpoint<ISampleService>("/Service.asmx", new 
SoapEncoderOptions(), SoapSerializer.XmlSerializer);

}); 
c# .net asp.net-core soap
1个回答
1
投票

我必须在控制器中设置端点吗?同样的方式我 使用我的普通 REST API 执行此操作?我没有找到这个问题的答案 互联网

好吧,对于

Web Service
中的
asp.net core project
集成,无论版本如何,都有两个
prerequisite

先决条件:

  1. 您的
    web service
    必须正在运行并且
    URL
    应可用于呼叫
  2. 或者本地计算机中必须有有效的
    WSDL
    文件。

两者的共同实施:

对于

asmx
wsdl
集成,以下步骤相同。

另外,请确认,我已经使用过

Microsoft Visual Studio Community 2022
Version 17.3.6
在准备这个答案时。

步骤:1

enter image description here

步骤:2

enter image description here

步骤:3

enter image description here

使用asmx URL实现:

enter image description here

注意: 如果您的

Web Service
启动并运行,它将开始添加引用,没有任何问题。

使用WSDL文件实现:

enter image description here

enter image description here

注意: 您应该在此处

select path
填写您的
valid wsdl file
。忽略我这里的文件,你应该选择你的
wsdl file

在 Web API/MVC 控制器中使用您的服务

现在,在您的 Web API 项目中,您可以使用之前添加的服务引用。就像下面这样

请注意,您应该根据WCF服务的方法来调用该方法。

        var serviceReference1 = new ServiceReference1.Service1Client();
        var result = await serviceReference1.GetDataAsync(1) ;

enter image description here

如果您仍然遇到任何进一步的集成问题,您可以

refer to our official document for more details here

© www.soinside.com 2019 - 2024. All rights reserved.