ServiceStack에서 PDF 문서를 반환하기 위해 사용자 정의 포맷터를 구현하려고했습니다. 운이별로 없다. 예제를 살펴본 결과 VCard 샘플을 복사했지만 코드로 대체했습니다. 내 포맷터는 다음과 같습니다.PDF 문서 반환
public class PdfFormatter
{
private const string PdfFormatContentType = "application/pdf";
public static void Register(IAppHost appHost)
{
appHost.ContentTypeFilters.Register(PdfFormatContentType, SerializeToStream, (t, s) => { throw new NotImplementedException(); });
}
public static void SerializeToStream(IRequestContext requestcontext, object dto, Stream outputstream)
{
...
}
}
내 AppHost에서 등록이라고하고 콘텐츠 유형 필터가 예상대로 추가되었습니다. 내 문제는 SerializeToStream은 메서드의 메타 데이터에 액세스 할 때만 호출된다는 것입니다. 서비스 방법에 대한 구체적인 방법을 호출하면 HTML 응답이 반환됩니다.
라는 URL은 다음과 같습니다
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8,da;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host:mydomain.com
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
응답 헤더는 다음과 같이 :
Cache-Control:private
Connection:Close
Content-Length:46
Content-Type:application/pdf; charset=utf-8
Date:Thu, 16 May 2013 19:59:27 GMT
Server:ASP.NET Development Server/11.0.0.0
X-AspNet-Version:4.0.30319
X-Powered-By:ServiceStack/3,945 Win32NT/.NET
응답은 실제로 PDF하지만 디버거 http://mydomain.com/api/pdf/reply/GenerateDocument
요청 헤더는 다음과 같습니다 SerializeToStream에서 중단되지 않습니다.
도움을 주시면 감사하겠습니다.
을 아무런 차이가 없습니다. http : // localhost/api/pdf/metadata? op = GenerateDocument SerializeToStream이 호출되었지만 http : // localhost/api/pdf/reply/GenerateDocument? format = pdf를 호출 할 때 SerializeToStream이 호출되지 않습니다. – ThomasArdal
Fiddler/WebInspector 나 WireShark 등을 사용하여 전체 HTTP 요청 및 응답을 제공 할 수 있습니까? – mythz
요청 URL : HTTP : // localhost를 : 36386/API/PDF/응답/GenerateDocument 형식 = PDF 요청 방법 : GET 상태 코드 : text/html과, 응용 프로그램/XHTML + XML : 수락 200 OK – ThomasArdal