C# 415我的控制器中存在不支持的媒体类型问题[C]
我创建了一个端点,这样谷歌就可以访问一些数据库图片。这就是我的端点的样子C# 415我的控制器中存在不支持的媒体类型问题[C],c#,asp.net-mvc,model-view-controller,controller,C#,Asp.net Mvc,Model View Controller,Controller,我创建了一个端点,这样谷歌就可以访问一些数据库图片。这就是我的端点的样子 [HttpGet] [Route("MiniPicture")] [Produces("image/png")] public async Task<IActionResult> GetPictureAsync(Selector selector) { var resultFromService
[HttpGet]
[Route("MiniPicture")]
[Produces("image/png")]
public async Task<IActionResult> GetPictureAsync(Selector selector)
{
var resultFromService = await _xxx.GetPicturefromDB(selector, "de3-ae21a5a7b1fd");
var reponseAsByte = resultFromService.Results[0].Result.PictureAsByteArray;
if (reponseAsByte != null)
{
var resp = File(reponseAsByte, "image/png");
return resp;
}
return Ok(resultFromService.Results.FirstOrDefault());
}
我用我的Google Action和Postman尝试了这一点,我出现了以下错误:
如果你能告诉我应该检查什么,那将非常有帮助:s这个错误让我发疯 基于我对HTTP状态415的发现 HTTP 415不支持的媒体类型客户端错误响应代码 指示服务器拒绝接受请求,因为 有效负载格式为不受支持的格式 我认为您需要指定此端点期望的输入类型。 您只说明了它将产生什么,所以请尝试添加它所期望的信息
还有,为什么选择?我希望该参数中有一个数字数据类型,因为您给它提供了一个ID:),所以根据我找到的关于HTTP状态415的信息 HTTP 415不支持的媒体类型客户端错误响应代码 指示服务器拒绝接受请求,因为 有效负载格式为不受支持的格式 我认为您需要指定此端点期望的输入类型。 您只说明了它将产生什么,所以请尝试添加它所期望的信息
还有,为什么选择?我希望该参数中有一个数字数据类型,因为您给它输入了一个ID:)这是一个基于控制器代码准备的示例,它工作得非常好:
[HttpGet]
[Produces("image/png")]
public async Task<IActionResult> GetPictureAsync()
{
//var resultFromService = await _xxx.GetPicturefromDB(selector, "de3-ae21a5a7b1fd");
//var reponseAsByte = resultFromService.Results[0].Result.PictureAsByteArray;
var reponseAsByte = System.IO.File.ReadAllBytes(@"C:\\REPOS\\Test.png");
if (reponseAsByte != null)
{
var resp = File(reponseAsByte, "image/png");
return resp;
}
return Ok(reponseAsByte);
}
及
这意味着字节数组的生成方式不正确,因此在GetPicturefromDB
方法或PictureAsByteArray
方法中都会出现问题
对于PictureAsByteArray
您可以尝试以下方法:
//using System;
//using System.IO;
//using System.Runtime.Serialization.Formatters.Binary;
private byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
对于
GetPicturefromDB
,您需要确保它返回一个正常的结果,否则您需要发布代码以深入查看它。这是一个基于控制器代码编写的示例,它可以完美地工作:
[HttpGet]
[Produces("image/png")]
public async Task<IActionResult> GetPictureAsync()
{
//var resultFromService = await _xxx.GetPicturefromDB(selector, "de3-ae21a5a7b1fd");
//var reponseAsByte = resultFromService.Results[0].Result.PictureAsByteArray;
var reponseAsByte = System.IO.File.ReadAllBytes(@"C:\\REPOS\\Test.png");
if (reponseAsByte != null)
{
var resp = File(reponseAsByte, "image/png");
return resp;
}
return Ok(reponseAsByte);
}
及
这意味着字节数组的生成方式不正确,因此在GetPicturefromDB
方法或PictureAsByteArray
方法中都会出现问题
对于PictureAsByteArray
您可以尝试以下方法:
//using System;
//using System.IO;
//using System.Runtime.Serialization.Formatters.Binary;
private byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
对于GetPicturefromDB
,您需要确保它返回一个正常的结果,否则您需要发布代码以深入查看它
var reponseAsByte = resultFromService.Results[0].Result.PictureAsByteArray;
//using System;
//using System.IO;
//using System.Runtime.Serialization.Formatters.Binary;
private byte[] ObjectToByteArray(Object obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}