显示WCF服务中的图像

时间:2017-04-19 08:32:21

标签: c# asp.net-mvc wcf

我正在开发一个Web应用程序。我正在使用WCF Web服务来创建和检索SQL Server数据库中的数据。下面的WCF函数选择col_Photo列,其类型为VARBINARY(MAX),其中包含个人资料图片。当我保存记录并在表格上执行SELECT查询时,col_Photo包含上传照片的字节,因此我假设正在保存数据。以下是检索照片的功能:

public byte[] GetPhoto(string account, string id)
{
    QueryBuilder builder = new QueryBuilder();
    string query = builder.SelectQuery("tbl_" + account + "_details", new List<string> { "col_Photo" }, true, "col_Id", id, false, null, null);
    byte[] photo;

    SqlConnection connection = new SqlConnection(ConfigurationManager.ConnectionStrings[staffConnectionString].ConnectionString);
    SqlCommand command = new SqlCommand(query, connection);

    connection.Open();
    photo = Encoding.ASCII.GetBytes(command.ExecuteScalar().ToString());
    connection.Close();

    return photo;
}

在这种情况下,QueryBuilder是一个自动为我构建查询的类。它工作正常。在我的Web应用程序中,我使用以下ActionResult从数据库中获取照片:

public ActionResult DisplayPhoto(string id)
{
    ServiceClient service = new ServiceClient();
    service.Open();

    byte[] photo = service.GetPhoto(Session[sessionManager.sessionId].ToString(), id);

    if (photo != null)
    {
        service.Close();

        return File(photo, "image/png");
    }

    else
    {
        service.Close();

        return null;
    }
}

在我的Razor视图中,我使用以下HTML来显示图像:

<img src="@Url.Action("DisplayPhoto", "Staff", new { id = member.Id })" class="img-thumbnail" />

当我运行Web应用程序时,会返回一些内容,但图像不会显示。当我在浏览器中选择查看图像时,出现以下错误:

  

无法显示图像,因为它包含错误

调试Web应用程序并在photo变量上放置Watch后,它不是null并且包含从数据库中检索的字节。我尝试过返回base64网址,但这也不起作用。我在这里做错了吗?有什么建议吗?

0 个答案:

没有答案