Я пытаюсь настроить приложение ASP.NET WebAPI2 для работы в IIS 7.0. Когда я запускаю приложение в VS-2017, которое работает с привилегиями администратора и использует IIS Express, я не получаю ошибку. Но когда я публикую приложение и запускаю его в своем локальном IIS, я получаю сообщение об ошибке «Произошла ошибка при загрузке solutionStream».
Метод Controller принимает файл, загружаемый из PostMan, читает его поток и передает его стороннему API, который возвращает содержимое файла.
[HttpPost]
[ValidateMimeMultipartContentFilter]
[Route("GetLabelVariables")]
public async Task<IHttpActionResult> GetLabelVariables()
{
ILabel lbl;
var uploadPath = HttpContext.Current.Server.MapPath("~/App_Data");
var multiPartMemoryStreamProvider = new MultipartFormDataStreamProvider(uploadPath);
await Request.Content.ReadAsMultipartAsync(multiPartMemoryStreamProvider);
// Get thefile
var fileupload = multiPartMemoryStreamProvider.FileData.First();
// Get the temp name and path that MultipartFormDataStreamProvider used to save the file as:
var tempPath = fileupload.LocalFileName;
// Now read the file's data from the temp location.
var bytes = File.ReadAllBytes(tempPath);
// Using a MemoryStream
using (var stream = new MemoryStream(bytes))
{
// To Get the stream and return a LabelFile out of the stream.
// The code fails here in IIS but passes in VisualStudio IIS Express running
// in administrator mode.
// Am suspecting the IIS has a special way it receives HttpRequestMessages
lbl = PrintEngineFactory.PrintEngine.OpenLabel(stream);
}
return Ok(lbl.Variables.Select(x => new
{
x.Name,
x.Description,
x.Length,
x.IsFixedLength
}));
}