servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# 服务堆栈-尝试创建POST函数并读取JSON数据

C# 服务堆栈-尝试创建POST函数并读取JSON数据,c#,servicestack,C#,servicestack,我只是想创建一个简单的POST函数,让我发布一个JSON。我试着复制一些例子,但我不确定我做的有什么不同。任何帮助都会被感激的,我觉得我错过了一些简单的东西 我想发布的内容: 邮寄地址: 标题: 内容类型:application/json 生坯: { uuid:“someUuid”, 文件名:“测试”, dateTime:“dateee”, json:“一些json” } 您的SaveFileRequest请求数据需要实现irerequiresrequeststream 以下是以下文件: 直接从

我只是想创建一个简单的POST函数,让我发布一个JSON。我试着复制一些例子,但我不确定我做的有什么不同。任何帮助都会被感激的,我觉得我错过了一些简单的东西

我想发布的内容:

邮寄地址:

标题: 内容类型:application/json

生坯: { uuid:“someUuid”, 文件名:“测试”, dateTime:“dateee”, json:“一些json” }


您的
SaveFileRequest
请求数据需要实现
irerequiresrequeststream

以下是以下文件:

直接从请求流读取 您可以添加接口直接检索流,而无需填充请求DTO,而无需注册自定义绑定器,您可以跳过请求DTO的序列化

//请求DTO
公共类RawBytes:IRequiresRequestStream
{
/// 
///原始Http请求输入流
/// 
流请求流{get;set;}
}
这会告诉ServiceStack跳过尝试反序列化请求,以便您可以自己读取原始HTTP请求正文,例如:

public object Post(RawBytes请求)
{
byte[]bytes=request.RequestStream.ReadFully();
字符串text=bytes.FromUtf8Bytes();//如果发送了文本
}

成功了谢天谢地,我一直在做这个,谢谢你!
namespace SomeNamespace.Model
{
    [Route("/save/file", "POST")]
    public class SaveFileRequest
    {
        public Stream RequestStream { get; set; }
    }

    public class SaveFileResponse
    {
        public bool Success { get; set; }
    }
}

namespace SomeNamespace.ServiceInterface
{
    [EnableCors(allowedMethods:"POST")]
    public class SaveFileService : Service
    {
        public object Any(SaveFileRequest request)
        {
            var response = new SaveFileResponse { Success = false };
            string savedataJson;

            using (var reader = new StreamReader(Request.InputStream))
            {
                savedataJson = reader.ReadToEnd();
            }

            try
            {
                Console.WriteLine(savedataJson);  // When I debug, the contents are ""
            }
            catch(Exception ex) {...}
         }
      }
   }
}