servicestack,Service,F#,servicestack" /> servicestack,Service,F#,servicestack" />

RequestDTO的属性在servicestack中给出了错误的值

RequestDTO的属性在servicestack中给出了错误的值,service,f#,servicestack,Service,F#,servicestack,我正在尝试使用servicestack创建服务。RequestDTO有两个属性(文件名和RequestStream) 我正在尝试读取request.fileName属性的值,它正在显示值ctor@25。我不明白它为什么显示ctor@25每次输入的值 编辑-以下代码在客户端编写。 当您使用iRequestRequestStream装饰请求DTO时,您告诉ServiceStack不要像自己一样阅读请求正文。但是,它仍将尝试使用随请求一起提交的其余请求参数填充请求DTO 在没有看到实际的HTTP请求

我正在尝试使用servicestack创建服务。RequestDTO有两个属性(
文件名和RequestStream

我正在尝试读取
request.fileName
属性的值,它正在显示值
ctor@25
。我不明白它为什么显示
ctor@25
每次输入的值

编辑-以下代码在客户端编写。


当您使用
iRequestRequestStream
装饰请求DTO时,您告诉ServiceStack不要像自己一样阅读请求正文。但是,它仍将尝试使用随请求一起提交的其余请求参数填充请求DTO

在没有看到实际的HTTP请求的情况下,我无法判断
fileName
是否也包含在HTTP请求中,但如果这是一个多部分/formdata请求,则
fileName


但是如果它是一个
多部分/formdata
请求则不要。IRequiresRequestStream只有在原始字节流发布到URL时才有意义,它不用于处理
multipart/formdata
,后者应使用
base.Request.Files
,后者专门用于处理
multipart/formdata
请求,并包括访问随文件上载发布的附加元数据。

这排除了这个问题最重要的部分,发出请求的客户端代码或原始HTTP。请检查我更新的问题。看起来您发送的是
多部分/表单数据
请求不是原始字节流,因此不要使用
IRequiresRequestStream
,而是使用
base.request.Files
。另外,
RequestStream
不是一个普通属性,它将整个HTTP请求体表示为一个字节流,也就是说,不是javascript假定的单个FormData属性。
module FileUploadService = 

  type FileDetails() =
        member val fileName= string with get,set
        interface IRequiresRequestStream with
           member val RequestStream = null with get,set



  type FileService() = 
          inherit Service()
          interface IService
             member this.Post(request : FileDetails ) = 
               //My Logic
               //can not able to read "request.fileName" property value.
    function uploadBlobOrFile(fileData) {
        var xhr = new XMLHttpRequest();
        xhr.open('POST', "http://172.27.15.26:8000/ById/FileUploadService", true);

        xhr.withCredentials=true;
        xhr.onload = function (e) {
            progressBar.value = 0;
            progressBar.textContent = progressBar.value;
        };
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 && xhr.status == 200) {
                console.log("success");
            }
        };
        var data = new FormData();
        data.append("fileName", "FileName.txt"); 
        data.append("RequestStream", file);

        xhr.send(data);
    }