在每个 ServiceStack 上/元数据页列出了客户端请求特定内容类型的不同方式:
覆盖客户端 HTTP 中的内容类型Accept标头、附加?格式=xml或添加 .format扩大
例如。客户端可以指定您的自定义 ContentType?format=x-我的内容类型,添加.x-my-content-type
扩展或通过指定 HTTP 标头(在 HttpClient 中):
接受:应用程序/x-我的内容类型
否则,如果您的 HttpClient 不发送 Accept 标头,您可以在 AppHost 中指定默认内容类型:
SetConfig(new HostConfig {
DefaultContentType = "application/x-my-content-type"
});
注意:ServiceStack 中的所有配置选项均设置为HostConfig
.
从 Web 浏览器调用 Web 服务时的问题是,它们通常会要求Accept: text/html
根据合同,ServiceStack 有义务返回 HTML(如果启用)。
为了确保始终返回您的 Content-Type,您可能还需要通过以下方式禁用 HTML 功能:
SetConfig(new HostConfig {
EnableFeatures = Feature.All.Remove(Feature.Html),
});
否则如果你想覆盖接受header 中,您可以通过在 HttpResult 中装饰您的 Response DTO 来强制您的服务始终返回您的 Content-Type,即:
return new HttpResult(dto, "application/x-my-content-type");
否则,在服务之外的任何地方(例如请求/响应过滤器),您可以在有权访问的任何地方设置响应内容类型IHttpRequest
with:
httpReq.ResponseContentType = "application/x-my-content-type";