目前我只使用 REST 并直接在控制器中设置端点。
例如:
[HttpGet("someEndpoint")]
现在我必须使用 SOAP,并且我正在尝试在我的
Program.cs
中设置端点(参见屏幕截图)。我总是收到 BasicHttpBinding()
的错误。
我的问题:我必须在控制器中设置端点吗?与我使用普通 REST API 执行此操作的方式相同吗?我在互联网上没有找到这个问题的答案。提前非常感谢您。
(我的母语是德语,对不起我的英语:))
编辑:代码:
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);
});
我必须在控制器中设置端点吗?同样的方式我 使用我的普通 REST API 执行此操作?我没有找到这个问题的答案 互联网
好吧,对于
Web Service
中的 asp.net core project
集成,无论版本如何,都有两个 prerequisite
:
先决条件:
web service
必须正在运行并且 URL
应可用于呼叫WSDL
文件。两者的共同实施:
对于
asmx
和 wsdl
集成,以下步骤相同。
另外,请确认,我已经使用过
Microsoft Visual Studio Community 2022
Version 17.3.6
在准备这个答案时。
步骤:1
步骤:2
步骤:3
使用asmx URL实现:
注意: 如果您的
Web Service
启动并运行,它将开始添加引用,没有任何问题。
使用WSDL文件实现:
注意: 您应该在此处
select path
填写您的 valid wsdl file
。忽略我这里的文件,你应该选择你的 wsdl file
。
在 Web API/MVC 控制器中使用您的服务
现在,在您的 Web API 项目中,您可以使用之前添加的服务引用。就像下面这样
请注意,您应该根据WCF服务的方法来调用该方法。
var serviceReference1 = new ServiceReference1.Service1Client();
var result = await serviceReference1.GetDataAsync(1) ;
refer to our official document for more details here