图片HttpMessageResponse响应但没有显示?

时间:2014-04-08 10:37:38

标签: asp.net-mvc-4 breeze httpresponse hottowel

我目前正在更新旧网站以使用Hot Towel框架,当前网站所做的一件事就是使用HTTPMessageResponse加载图像。这在旧设置中工作正常但是在新设置中图像不显示并且转到URL产生...

StatusCode: 200, ReasonPhrase: 'OK', Version: 1.1, Content: System.Net.Http.ByteArrayContent, Headers: { Content-Type: image/png }

我看了两个应用程序产生的响应,以及来自以下函数的响应匹配(响应与上面相同,内容完美匹配)......

namespace OPC.Controllers
{
    public class ImageController : Controller
    {
        public HttpResponseMessage GetImage(int imageId)
        {
            var blob = new byte[10];
            var context = new OPCEntity();
            var ImageString = context.sp_GetImageData(imageId);
            foreach (var Result in ImageString)
            {
                blob = Result.Data;
            }
            Image image;
            var ms = new MemoryStream();
            ms.Write(blob, 0, blob.Length);
            var result = new HttpResponseMessage(HttpStatusCode.OK);
            result.Content = new ByteArrayContent(ms.ToArray());
            result.Content.Headers.ContentType = new  System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
            return result;
        }
    }
}

使用...

在JS中设置图像
image.setAttribute('src', document.location.href.match(/(^[^#]*)/)[0] + '/Image/GetImage?imageId=' + imageDetails.imageId);

是否有人对我可能遗失的内容有任何想法,或者热毛巾框架中的任何内容是否会干扰。

非常感谢提前。

1 个答案:

答案 0 :(得分:0)

好吧,我错过了一些重要的事情......应该是......

public class ImageController : ApiController{}

但是我也发现breeze web API配置确实与普通的Web API配置冲突,所以目前我不得不将BreezeWebApiConfig.cs改为以下

public static class BreezeWebApiConfig {

    public static void RegisterBreezePreStart() {
      GlobalConfiguration.Configuration.Routes.MapHttpRoute(
          name: "BreezeApi",
          routeTemplate: "api/{controller}/{action}"
      );
    }

}