RestSharp๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ํ์ผ์ .Net Core 2.1 REST ์ธํฐํ์ด์ค์ ์ ๋ก๋ํ ๋ ์ผ๋ถ ํ์ผ์์ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
System.IO.InvalidDataException: Line length limit 100 exceeded.
at Microsoft.AspNetCore.WebUtilities.BufferedReadStream.ReadLineAsync(Int32 lengthLimit, CancellationToken cancellationToken)
at Microsoft.AspNetCore.WebUtilities.MultipartReaderStream.ReadAsync(Byte[] buffer, Int32 offset, Int32 count, CancellationToken cancellationToken)
at Microsoft.AspNetCore.WebUtilities.StreamHelperExtensions.DrainAsync(Stream stream, ArrayPool`1 bytePool, Nullable`1 limit, CancellationToken cancellationToken)
at Microsoft.AspNetCore.WebUtilities.MultipartReader.ReadNextSectionAsync(CancellationToken cancellationToken)
Insomnia๋ก ๋์ผํ ์์ ์ ์ํํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ง ์๊ณ RestSharp์์๋ง ๋ฐ์ํฉ๋๋ค.
https://stackoverflow.com/questions/44642701/microsoft-aspnetcore-webutilities-line-length-limit-100-exceeded ์ค ๋ ํ์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์ฝ์์ง๋ง ์ด์ ๋ํ ์ ์ผํ ๊ธฐ์ฌ์ ๋๋ค. .
์ปจํธ๋กค๋ฌ ์๋ช ์ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
[HttpPost, DisableRequestSizeLimit]
public async Task<IActionResult> AddPictureAsync(
IFormFile Picture,
IFormFile Thumbnail,
string Title)
{
๋ณด๋ผ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
var Request = new RestRequest("picture", Method.POST) { AlwaysMultipartFormData = true };
Request.AddHeader("SessionId", SessionId);
Request.AddFile("Picture", PhotoData.ToArray(), Photo.PhotoUrl);
Request.AddFile("Thumbnail", ThumbnailData, Photo.PhotoUrl.Replace(".jpg", "-t.jpg"));
Request.AddParameter("Title", Photo.Title ?? string.Empty, ParameterType.GetOrPost);
RestSharp๋ฅผ HttpClient๋ก ๋์ฒดํ์ต๋๋ค. ๋์ผํ ํธ์ถ, ๋์ผํ ๋ฐ์ดํฐ, ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ ํ์คํ RestSharp์ ์์ต๋๋ค.
์ ๋ฌ๋ ๋ฐ์ดํฐ์ ํ์๊ณผ ๊ด๋ จ์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค. Mac์์ ์คํํ๋ฏ๋ก ๋ฐ์ดํฐ ๋์ ์์๋๋ CRLF์ ๊ด๋ จํ์ฌ ๋ด๊ฐ ์ ๊ณตํ ๋งํฌ์์ ์ ๊ธฐ๋ ๋ฌธ์ ๊ฐ ๋ฌธ์ ์ผ ์ ์์ต๋๋ค.
๋๋ ๋ํ .NET Core ํ๋ก์ ํธ์ ๊ธ์ ์ผ๊ณ ๊ทธ๋ค์ ๊ฐ์ ๋ฌธ์ ๋ฅผ ์ง์ ํ์ต๋๋ค.
RestSharp๋ Mac์์ ์ค ๋ ์ธ์ฝ๋ฉ์ ๋ค๋ฅด๊ฒ ์ํํฉ๋๋ค.
๊ธ์, SO์ ๋ํ ๋๋ต์ ๋ช
ํํฉ๋๋ค. ์ฐ๋ฆฌ๋ ๋ํ Environment.LineBreak
ํ์ง๋ง ๋ฌผ๋ก ์ด๊ฒ์ ํด๋ผ์ด์ธํธ ํ๊ฒฝ์์ ์จ ๊ฒ์ด๊ณ ์๋ฒ๋ ๋ค๋ฅธ ํ๊ฒฝ์ ๊ฐ์ง ์ ์์ผ๋ฏ๋ก ์ค๋จ๋ฉ๋๋ค. ๋ค์ ๋ฒ์ ์์ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๋๋ ์ฌ๋ฌ๋ถ์๊ฒ https://tools.ietf.org/html/rfc2616 ์ ๊ฐ๋ฆฌํค๊ณ ์ถ์ต๋๋ค
ETA๊ฐ ์์ต๋๊น? ์ง๊ธ์ ํธ์ถ์ ์ฑ๊ณต์ํค๊ธฐ ์ํด RestSharp์์ ์ฝ๋๋ฅผ ์ฎ๊ฒจ์ผ ํฉ๋๋ค.
๊ทธ๊ฒ์ ์ค๋ ์ ์ ์์ ๋์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
ETA๊ฐ ์์ต๋๊น? ์ง๊ธ์ ํธ์ถ์ ์ฑ๊ณต์ํค๊ธฐ ์ํด RestSharp์์ ์ฝ๋๋ฅผ ์ฎ๊ฒจ์ผ ํฉ๋๋ค.