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