c# - 发送帖子请求多部分表单数据。来自某些 Microsoft 服务的错​​误 "Line length limit 100 exceeded"

标签 c# asp.net node.js http axios

此数据是从 Postman 发送的并且有效:

这是一个以 200 状态通过的 postman 请求:

POST /api/upload HTTP/1.1

Host: api.test.contoso.se

Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

Authorization: Basic 123

User-Agent: PostmanRuntime/7.13.0

Accept: */*

Cache-Control: no-cache

Postman-Token: 089af753-fa12-46c4-326f-dfc39c36faab,c5977145-ece3-4b53-93ff-057788eb0dcf

Host: api.test.contoso.se

accept-encoding: gzip, deflate

content-length: 18354

Connection: keep-alive

cache-control: no-cache

Content-Disposition: form-data; name="Lang"

SV
------WebKitFormBoundary7MA4YWxkTrZu0gW--

Content-Disposition: form-data; name="File"; filename="/C:/Users/file.docx


------WebKitFormBoundary7MA4YWxkTrZu0gW--

Content-Disposition: form-data; name="Login"

ABC

这是我通过 Axios 来自 NodeJs 的请求:

    const form_data = new FormData();
        form_data.append("File", fs.createReadStream(pathToFile));
        form_data.append('Login', alias.toUpperCase());
        console.log(form_data); // se output down
        const request_config = {
            headers: {
                "Authorization": "Basic 123",
                "Content-Type": `multipart/form-data; boundary=${form_data._boundary}`
            },
            data: form_data
        };

控制台日志(表单数据):

FormData {

  _overheadLength: 540,

  _valueLength: 13,

  _valuesToMeasure:

   [ ReadStream {

       _readableState: [ReadableState],

       readable: true,

       _events: [Object],

       _eventsCount: 3,

       _maxListeners: undefined,

       path:

        '/Users/qq/test.docx',

       fd: null,

       flags: 'r',

       mode: 438,

       start: undefined,

       end: Infinity,

       autoClose: true,

       pos: undefined,

       bytesRead: 0,

       closed: false,

       emit: [Function] } ],

  writable: false,

  readable: true,

  dataSize: 0,

  maxDataSize: 2097152,

  pauseStreams: true,

  _released: false,

  _streams:

   [ '----------------------------610001147909085905792533\r\nContent-Disposition: form-data; name="File"; filename="test.docx"\r\nContent-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document\r\n\r\n',

     DelayedStream {

       source: [ReadStream],

       dataSize: 0,

       maxDataSize: Infinity,

       pauseStream: true,

       _maxDataSizeExceeded: false,

       _released: false,

       _bufferedEvents: [Array],

       _events: [Object],

       _eventsCount: 1 },

     [Function: bound ],

     '----------------------------610001147909085905792533\r\nContent-Disposition: form-data; name="Login"\r\n\r\n',

     'abc',

     [Function: bound ] ],

  _currentStream: null,

  _insideLoop: false,

  _pendingNext: false,

  _boundary: '--------------------------610001147909085905792533

我从 ASP 服务器得到的错误:Line length limit 100 exceeded

我的请求中缺少什么?

最佳答案

根据这两个github问题:

https://github.com/aspnet/AspNetCore/issues/2939

https://github.com/aspnet/AspNetCore/issues/3724

该问题是由于未能使用正确的行结尾引起的。我无法从您的代码中确切地知道问题出在哪里,但调试它应该相当简单。

您需要使用代理 - 我找到了 Fiddler非常好。捕获来自 postman 和您的客户的请求并进行比较。您可能需要将整个请求放入 Notepad++ 等编辑器中才能查看非打印字符。

一旦发现问题,应该可以直接修改以根据需要添加或删除 \r

关于c# - 发送帖子请求多部分表单数据。来自某些 Microsoft 服务的错​​误 "Line length limit 100 exceeded",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56579151/

相关文章:

c# - 如何创建 .NET Web 服务器来接收具有任意长段的 URL?

c# - Objectlistview TextMatchFilter 过滤而不是突出显示

c# - 更改 signalR 中的 ReferenceLoopHandling

c# - 将数据绑定(bind)到 Asp.net 中的模板字段

c# - 使用 ITextSharp 从内存流附加 PDF 文件时遇到问题

c# - Web 表单页面指令中的 CompilationLock 错误

node.js - 将控制台记录到 Electron 文件中

c# - 在 Visual Studio 中复制断点的简单方法

javascript - express : Call to next in error handler

javascript - 将参数从 Controller 传递到 angularjs 中的资源工厂以在数据库中搜索