gpt4 book ai didi

c# - WebGet 的 WCF 响应格式

转载 作者:IT王子 更新时间:2023-10-29 04:25:55 25 4
gpt4 key购买 nike

WCF 为 ServiceContract 的 WebGet 注释中的 ResponseFormat 属性提供了两个选项。

[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate = "greet/{value}", BodyStyle = WebMessageBodyStyle.Bare)]
string GetData(string value);

[OperationContract]
[WebGet(UriTemplate = "foo", BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)]
string Foo();

ResponseFormat 的选项是 WebMessageFormat.Json 和 WebMessageFormat.Xml。是否可以编写我自己的网络消息格式?我希望当客户端调用 foo() 方法时他得到原始字符串 - 没有 json 或 xml 包装器。

最佳答案

尝试使用

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));

关于c# - WebGet 的 WCF 响应格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/992533/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com