2009-12-29 78 views

回答

2

ASMX web服務使用SOAP,內容類型將始終爲application/soap+xml,內容代表xml。即使你從你的方法返回一個byte[],這個數組也會被base64編碼到肥皂體中。

+0

那麼有沒有辦法繞過這個限制? :) – zproxy 2009-12-29 16:09:31

+0

這不是一個限制,它是標準的一部分。如果您不想返回SOAP客戶端可以理解的響應,那麼不要首先使用SOAP(ASMX)頁面 - 使用更通用的HTTP處理程序之一併寫入Response對象。 – David 2009-12-29 16:29:14

2

您可以從Web服務返回一個字節數組,但它仍然會被序列化爲響應消息。 (通常在SOAP XML響應中是base-64)。

如果您只想返回二進制內容,則不應使用Web服務。相反,您可以將Response.BinaryWrite用於沒有html內容的常規頁面,或者在http處理程序中使用context.BinaryWrite

2

而不是Web服務,使用通用處理程序(.ashx)。

通用處理程序接受get/post請求,並使您能夠通過HttpContext完全控制輸出。

我通常使用這些發送文件(pdf等)到瀏覽器。