如果WebMethod返回字符串,它將被序列化爲xml。如何從ASP.NET Web服務返回原始字節?
我想返回byte[]
與響應ContentType - 我也可以指定它?
可以在ASP.NET Web服務Web方法中完成嗎?
如果WebMethod返回字符串,它將被序列化爲xml。如何從ASP.NET Web服務返回原始字節?
我想返回byte[]
與響應ContentType - 我也可以指定它?
可以在ASP.NET Web服務Web方法中完成嗎?
ASMX web服務使用SOAP,內容類型將始終爲application/soap+xml
,內容代表xml
。即使你從你的方法返回一個byte[]
,這個數組也會被base64編碼到肥皂體中。
您可以從Web服務返回一個字節數組,但它仍然會被序列化爲響應消息。 (通常在SOAP XML響應中是base-64)。
如果您只想返回二進制內容,則不應使用Web服務。相反,您可以將Response.BinaryWrite
用於沒有html內容的常規頁面,或者在http處理程序中使用context.BinaryWrite
。
而不是Web服務,使用通用處理程序(.ashx)。
通用處理程序接受get/post請求,並使您能夠通過HttpContext完全控制輸出。
我通常使用這些發送文件(pdf等)到瀏覽器。
那麼有沒有辦法繞過這個限制? :) – zproxy 2009-12-29 16:09:31
這不是一個限制,它是標準的一部分。如果您不想返回SOAP客戶端可以理解的響應,那麼不要首先使用SOAP(ASMX)頁面 - 使用更通用的HTTP處理程序之一併寫入Response對象。 – David 2009-12-29 16:29:14