Azure 함수 응답에 대한 미디어 형식 포맷터를 설정하여 Excel 파일을 반환하려고합니다. 외부 파일 바인딩을 원하지 않습니다. 다운로드를 위해 브라우저로 출력을 스트리밍하고 BLOB 또는 Google 시트 또는 기타 파일에 파일을 쓰지 않으려 고합니다. 다른 목적 (예 : WebApi)에서는이 목적으로 EPPlus 라이브러리와 WebApiContrib.Formatting.Xlsx를 사용했습니다. 패키지를 가져 와서 함수에서 참조 할 수 있었지만 성공적으로 포매터를 추가하고 응답에 적용 할 수 없었습니다.Azure 함수 - 응답 메시지에 MediaTypeFormatter를 설정 하시겠습니까?
포맷터를 추가하는 함수에 대해 HttpConfiguration 객체에 대한 참조를 가져올 수 있습니까? CreateResponse 호출에 XlsxMediaTypeFormatter를 추가하려했지만 어떤 이유로 MediaTypeFormatter로 캐스팅 할 수 없습니다. MIME 형식을 설정하려고하면 사용할 수있는 포맷터가 없다고 말합니다.
여기 내 테스트 기능입니다 :
using System.Net;
using System.Net.Http.Headers;
using System.Net.Http.Formatting;
using WebApiContrib.Formatting.Xlsx;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var testData = new List<TestItemDto>
{
new TestItemDto
{
Id = System.Guid.NewGuid().ToString(),
Name = "Test Item 1"
},
new TestItemDto
{
Id = System.Guid.NewGuid().ToString(),
Name = "Test Item 2"
}
};
//var excelMediaType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
var formatter = new XlsxMediaTypeFormatter(headerHeight: 25f, freezeHeader: true);
var response = req.CreateResponse<List<TestItemDto>>(HttpStatusCode.OK, testData, (MediaTypeFormatter)formatter);
response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment")
{
FileName = "TestData.xlsx"
};
return response;
}
public class TestItemDto
{
public string Id { get; set; }
public string Name { get; set; }
}
내가 오류를 얻을 :
error CS0030: Cannot convert type 'WebApiContrib.Formatting.Xlsx.XlsxMediaTypeFormatter' to 'System.Net.Http.Formatting.MediaTypeFormatter'
내 project.json 파일 :
이것은 가장 좋은 대답하지{
"frameworks": {
"net46":{
"dependencies": {
"EPPlus": "3.1.3.3",
"WebApiContrib.Formatting.Xlsx" : "1.0.1"
}
}
}
}
어셈블리 버전이 일치하지 않지만 아직 어디에서 볼 수없는 것 같습니다. 'csproj' 프리 컴파일 함수를 사용하여 동일한 코드를 로컬에서 실행할 수 있습니까? 나를 위해 일하는 것 같아 ... – Mikhail
나는 로컬로 시도하고 XlsxMediaTypeFormatter를 인스턴스화 런타임 오류 (null 참조)있어. 분명히 그 라이브러리는 (WebApi에서 사용하도록 설계된) 함수에서 작동하지 않을 것입니다. 미디어 유형을 설정하고 함수에서 브라우저로 파일을 반환하는 다른 솔루션을 찾고 있습니다. EPPlus 라이브러리를 사용하여 파일을 생성 한 다음 응답 내용으로 직접 스트리밍하려고합니다. – emaia