WebMethod가 문자열을 반환하면 XML로 serialize됩니다.ASP.NET 웹 서비스에서 원시 바이트를 어떻게 반환 할 수 있습니까?
응답하는 ContentType으로 byte[]
을 반환하고 싶습니다. 또한 지정할 수 있습니까?
ASP.NET 웹 서비스 웹 메서드로 수행 할 수 있습니까?
WebMethod가 문자열을 반환하면 XML로 serialize됩니다.ASP.NET 웹 서비스에서 원시 바이트를 어떻게 반환 할 수 있습니까?
응답하는 ContentType으로 byte[]
을 반환하고 싶습니다. 또한 지정할 수 있습니까?
ASP.NET 웹 서비스 웹 메서드로 수행 할 수 있습니까?
ASMX 웹 서비스는 SOAP를 사용하며 컨텐츠 유형은 항상 application/soap+xml
이고 내용은 xml
입니다. 메서드에서 byte[]
을 반환하더라도이 배열은 base64가 비누 본문으로 인코딩됩니다.
웹 서비스에서 바이트 배열을 반환 할 수는 있지만 응답 메시지로 계속 serialize됩니다. (일반적으로 SOAP XML 응답에서 base-64로 사용됩니다.)
2 진 콘텐츠 만 반환하려면 웹 서비스를 사용하지 않아야합니다. 대신 Response.BinaryWrite
을 HTML 콘텐츠가없는 일반 페이지 또는 context.BinaryWrite
을 http 핸들러에 사용할 수 있습니다.
웹 서비스 대신 일반 처리기 (.ashx)를 사용하십시오.
일반 처리기는 가져 오기/게시 요청을 받아들이고 HttpContext를 통해 출력을 완전히 제어 할 수있는 기능을 제공합니다.
저는 일반적으로 파일 (pdfs 등)을 브라우저에 보내는 데이 파일을 사용합니다.
따라서이 제한을 우회 할 방법이 없습니까? :) – zproxy
그것은 제한이 아니며 표준의 일부입니다. SOAP 클라이언트가 이해할 수있는 응답을 반환하지 않으려면 먼저 SOAP (ASMX) 페이지를 사용하지 마십시오.보다 일반적인 HTTP 처리기 중 하나를 사용하고 Response 개체에 쓸 수 있습니다. – David