0

我想创建一个通用 API 端点,客户端可以将文本或文件数据发布到其中,我们不会知道数据的内容/媒体类型。该框架似乎需要为 HTTP 标头中传递的任何内容类型指定内容格式化程序,否则会引发错误。我不想为我们可能接受的每种可能的媒体类型定义一个格式化程序,因为我们还不知道它们可以包含什么。

有没有办法用通用媒体类型格式化程序定义端点,或者根本不指定一个?如果我使用通用对象作为我的方法参数似乎并不介意,但框架一直挂在无法在没有格式化程序的情况下处理媒体类型的问题上。

我们实际上不需要能够处理这些数据,只需将其存储(用于消息传递系统之类的东西)。

附带说明一下,我宁愿将此数据作为请求正文的原始内容接收,而不是使用多部分表单请求,但如果这样做更有意义,它可能是一种选择。

4

2 回答 2

2

您可以通过自己阅读内容来完全绕过格式化程序。这是一个例子:

public async Task Post()
{
    string content = await Request.Content.ReadAsStringAsync();
    // Store away the content
}

这根本不需要您使用或定义任何格式化程序。

于 2013-06-10T23:43:25.593 回答
2

或者,如果您想比 Youssef 的建议更进一步,您可以这样做。

public Task<HttpResponseMessage> Post(HttpRequestMessage request) {

   var stream = await request.Content.ReadAsStreamAsync();

   return new HttpResponseMessage(HttpStatusCode.Ok) { RequestMessage = request } ;
}
于 2013-06-10T23:52:13.700 回答