如何向CoreWCF服务添加GET方法

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

我正在将 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 发送。我在这里做错了什么?

c# wcf corewcf
1个回答
1
投票

安装 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();

邮递员测试:

enter image description here

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