我目前正在更新旧网站以使用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);
是否有人对我可能遗失的内容有任何想法,或者热毛巾框架中的任何内容是否会干扰。
非常感谢提前。
答案 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}"
);
}
}