我正在将 WCF 服务从 .net 框架转换为 .net core 并使用 CoreWCF,我的方法像这样装饰
public interface IService
{
[OperationContract]
[WebInvoke(
Method = "GET",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate= "MethodName?status={status}")]
Task<ServiceResponse> MethodName(ServiceStatus status);
}
但是,当我运行该服务时,GET 调用始终返回 400,而 post 调用则有效。我将 wsdl 添加到 SoapUI,soapUI 将请求作为 post 发送。我在这里做错了什么?
安装 Corewcf.webhttp 软件包。然后使用 webget 功能。
Iservice.cs
using CoreWCF;
using CoreWCF.Web;
using System;
using System.Runtime.Serialization;
namespace CoreWCFService1
{
[ServiceContract]
public interface IWebApi
{
[OperationContract]
[WebGet(UriTemplate = "/hello")]
string PathEcho();
}
public class WebApi : IWebApi
{
public string PathEcho() => "Hello World!";
}
}
程序.cs
var builder = WebApplication.CreateBuilder(args);
builder.WebHost.ConfigureKestrel(options =>
{
options.AllowSynchronousIO = true;
options.ListenLocalhost(7119);
});
builder.Services.AddServiceModelWebServices();
var app = builder.Build();
app.UseServiceModel(builder =>
{
builder.AddService<WebApi>();
builder.AddServiceWebEndpoint<WebApi, IWebApi>("api");
});
app.Run();
邮递员测试: