Я разработал простую службу ashx, которая извлекает изображения из далекой-далекой системы и отображает их в приложении .net. Все отлично работает в разработке, которая должна быть идентична производственной среде, поэтому это похоже на ошибку конфигурации.
Страница, на которой реализовано изображение, также возвращает это сообщение в окне журнала.
Ресурс интерпретируется как изображение, но передается с типом MIME text/html
В производстве
В развитие
Кроме того, код и web.config и подобные в средах идентичны. Я даже скопировал все дерево разработки и запустил его на сервере разработки с точно таким же результатом.
Моя реализация выглядит так
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers accessPolicy="Read, Write, Script, Execute">
<remove name="SPImage" />
<add name="SPImage" verb="GET" path="SPImage.ashx" type="Web.Business.Handlers.SPImage, Web" />
</handlers>
</system.webServer>
И обработчик
namespace Web.Business.Handlers
{
public class SPImage : IHttpHandler
{
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
Guid imageGuid;
if (!Guid.TryParse(context.Request.QueryString["id"], out imageGuid))
// Get user
var user = aspnet_MembershipController.Read<aspnet_MembershipListModel>(context.User.Identity.Name);
// Get requested image
var image = GalleryListController.ReadImage<IGalleryPicture>(user.ID, imageGuid);
byte[] file = DownloadProcedureController.Download<byte[]>("gallerier", image.Webimage);
int width = 270;
int height = 180;
// Return image in scaled format
var stream = new MemoryStream();
var settings = new ResizeSettings(string.Format("width={0};height={1};format=jpg;quality={2};mode=crop", width, height, 100)) {};
// ...process the image
new ImageResizer.ImageJob(file, stream, settings).Build();
HttpResponse httpResponse = context.Response;
httpResponse.ContentType = "image/jpeg";
//httpResponse.CacheControl = "no-cache";
httpResponse.BufferOutput = false; //Stream the content to the client, no need to cache entire streams in memory...
httpResponse.BinaryWrite(stream.GetBuffer());
httpResponse.End();
}
}
}
Кто-нибудь признает это?
Спасибо