尝试使用
BodyStyle = WebMessageBodyStyle.Bare
然后从您的函数返回一个 System.IO.Stream。
这是我用来从数据库中返回图像的一些代码,但可以通过 URL 访问:
[OperationContract()]
[WebGet(UriTemplate = "Person/{personID}/Image", BodyStyle = WebMessageBodyStyle.Bare)]
System.IO.Stream GetImage(string personID);
执行:
public System.IO.Stream GetImage(string personID)
{
// parse personID, call DB
OutgoingWebResponseContext context = WebOperationContext.Current.OutgoingResponse;
if (image_not_found_in_DB)
{
context.StatusCode = System.Net.HttpStatusCode.Redirect;
context.Headers.Add(System.Net.HttpResponseHeader.Location, url_of_a_default_image);
return null;
}
// everything is OK, so send image
context.Headers.Add(System.Net.HttpResponseHeader.CacheControl, "public");
context.ContentType = "image/jpeg";
context.LastModified = date_image_was_stored_in_database;
context.StatusCode = System.Net.HttpStatusCode.OK;
return new System.IO.MemoryStream(buffer_containing_jpeg_image_from_database);
}
在您的情况下,要返回原始字符串,请将 ContentType 设置为“text/plain”之类的内容并将您的数据作为流返回。猜测一下,是这样的:
return new System.IO.MemoryStream(ASCIIEncoding.Default.GetBytes(string_to_send));