c# - 多部分数据意外结束

标签 c# node.js asp.net-core openshift busboy

我有一个 .net core 2.0 API 服务,它获取两个文件(XML 和 word)并将它们传输到 Node js 服务器, Node js 服务器将它们保存到 MongoDB。

当我在本地主机上托管网络核心服务时,一切正常,但是当我上传 .net 服务以打开 shift(Kubernete) 时,我在 busboy-body-parser 中的 Node.js 服务中遇到异常在 index.js 文件中打包:

"Error: Unexpected end of multipart data at ...node_modules\dicer\lib\Dicer.js:62:28 at process._tickCallback (internal/process/next_tick.js61:11)"

此代码捕获了 index.js file 中的异常:

busboy.on('error', function (err) {
                debug('Error parsing form');
                debug(err);
                error = err;
                next(err);
            });

这是我的 C# 代码,用于将文件发布到从 bratched 复制的 Node.js 服务:

public byte[] UploadFiles(string address, IEnumerable<UploadFile> files, NameValueCollection values)
    {
        var request = WebRequest.Create(address);
        request.Method = "POST";
        var boundary = "---------------------------" + DateTime.Now.Ticks.ToString("x", NumberFormatInfo.InvariantInfo);
        request.ContentType = "multipart/form-data; boundary=" + boundary;
        boundary = "--" + boundary;

        using (var requestStream = request.GetRequestStream())
        {
            // Write the values
            foreach (string name in values.Keys)
            {
                var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine);
                requestStream.Write(buffer, 0, buffer.Length);
                buffer = Encoding.ASCII.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"{1}{1}", name, Environment.NewLine));
                requestStream.Write(buffer, 0, buffer.Length);
                buffer = Encoding.UTF8.GetBytes(values[name] + Environment.NewLine);
                requestStream.Write(buffer, 0, buffer.Length);
            }

            // Write the files
            foreach (var file in files)
            {
                var buffer = Encoding.ASCII.GetBytes(boundary + Environment.NewLine);
                requestStream.Write(buffer, 0, buffer.Length);
                buffer = Encoding.UTF8.GetBytes(string.Format("Content-Disposition: form-data; name=\"{0}\"; filename=\"{1}\"{2}", file.Name, file.Filename, Environment.NewLine));
                requestStream.Write(buffer, 0, buffer.Length);
                buffer = Encoding.ASCII.GetBytes(string.Format("Content-Type: {0}{1}{1}", file.ContentType, Environment.NewLine));
                requestStream.Write(buffer, 0, buffer.Length);
                file.Stream.CopyTo(requestStream);
                buffer = Encoding.ASCII.GetBytes(Environment.NewLine);
                requestStream.Write(buffer, 0, buffer.Length);
            }

            var boundaryBuffer = Encoding.ASCII.GetBytes(boundary + "--");
            requestStream.Write(boundaryBuffer, 0, boundaryBuffer.Length);
        }

        using (var response = request.GetResponse())
        using (var responseStream = response.GetResponseStream())
        using (var stream = new MemoryStream())
        {
            responseStream.CopyTo(stream);
            return stream.ToArray();
        }
    }

最佳答案

尝试查看此链接:https://github.com/mscdex/dicer/issues/14

您需要将错误列表添加到文件中并查看问题所在

我们可以通过将错误事件处理程序附加到文件对象来捕获错误。

file.on('错误', ()=>{})

关于c# - 多部分数据意外结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53087446/

相关文章:

c# - 显示列表中的日期 C#

node.js - 简单对等 WebRTC 错误 : Ice connection failed

c# - 非 Controller 类无法访问 DbContext

c# - 添加到DataGridView C#时是否可以将行设置为默认不可见

c# - 如何从 HttpWebResponse 中提取信息?

c# - 清除页面在 WP8 中使用的内存

c# - 传递到 ViewDataDictionary 的模型项的类型为 'System.ValueTuple` 2

javascript - 获取请求的客户端 IP 地址而不是 Cloudflare 的 IP 地址

javascript - 在 Vue.js 中将文件上传到 ftp 服务器

jquery - .Net 6 中的 Asp.net Core 中的 Ajax Post 在 Action 方法中不起作用