powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC, проблема с IE
9 сообщений из 9, страница 1 из 1
MVC, проблема с IE
    #37660816
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, возникла проблема с работой в IE 8, может кто сталкивался или знает где подвох.
Кратко описываю ситуацию.

1)Есть классы, отвечающие за экспорт данных в Excel
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
    public static class ExcelControllerExtensions
    {
        public static ActionResult Excel(this Controller controller, IEnumerable rows, Dictionary<string, string> headers, string[] footer, string fileName)
        {
            return new ExcelResult(rows, headers, footer, fileName);
        }
    }

    public class ExcelResult : ActionResult
    {
        public ExcelResult(IEnumerable rows, Dictionary<string, string> headers, string[] footer, string fileName)
        {
           //....
        }
        public override void ExecuteResult(ControllerContext context)
        {
            StringWriter sw = new StringWriter();
            HtmlTextWriter tw = new HtmlTextWriter(sw);
            //далее формируем HTML 
           //и записываем его в Response как экселевский файл

            HttpContext context = HttpContext.Current;
            context.Response.Clear();
            context.Response.AddHeader("content-disposition", "attachment;filename="+fileName);
            context.Response.Charset = "";
            context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
            context.Response.ContentType = contentType;
            context.Response.Write(content);
            context.Response.End();

         }
}



2)В Контроллере есть метод
Код: c#
1.
2.
3.
4.
5.
[HttpGet]
public ActionResult ToExcel()
{
return this.Excel( items, headers, footer, "Report.xls");
}



3)Во View соответственно ссылаемся на метод ToExcel

Так вот в Опере, Хроме данные успешно экспортируются, все как надо, а в IE вылезает ошибка(в прилагаемом файле)
В чем может быть причина? Может кто сталкивался с подобным? Заранее спасибо.
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37660926
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что такое у Вас в context.Response.ContentType = contentType; ?
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37661007
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пардон, код вставил чтобы покомпактнее было, там подставляется "application/ms-excel"
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37662402
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Help?
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37662662
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scheduler,

Код: c#
1.
Response.ContentType = "application/force-download";
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37663577
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Response.ContentType = "application/force-download"; Не помогло, а сожалению.

А не может это быть связано с каким-нибудь настройками безопасности IE.
На это натолкнула мысль, что на тестовом WEB-сервере(тот который в VisualStudio) работающим по http все корректно загружается, а на рабочем, по https такая проблема вылезает
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37664640
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может кому пригодится. Решение приблизительно такое

Код: c#
1.
contentType = "application/x-msdownload"



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
private void WriteFile(string fileName, string contentType, string content)
        {
            HttpResponse Response = HttpContext.Current.Response;

            Response.Clear();
            Response.ClearHeaders();
            Response.Expires = -1;
            Response.ContentType = contentType;
            Response.AddHeader("content-disposition", "attachment; filename=" + fileName);
            Response.AddHeader("Content-Length", content.Length.ToString());
            Response.BufferOutput = false;
            Response.ContentEncoding = System.Text.Encoding.UTF8;
            Response.Charset = "utf-8";
            Response.Flush();

            Response.BinaryWrite(System.Text.Encoding.UTF8.GetPreamble()); 
            Response.Write(content);
            Response.Flush();
            Response.End();
        }



Идея обнаружена тут
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37664647
Фотография OracleLover
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
contentType = "application/x-msdownload"



Бро, это все вилами по воде )

Ибо у меня была похожая проблема и видишь она решилась через force-download, у тебя вот через x-msdownload. Одно известно точно - если что-то где-то не качается, надо покурить типы. Я кстати не по твоей ссылке, не когда сам решал что-то подобное так и не уразумел в чем была причина и по какой причине стоит использовать тот или иной тип.
...
Рейтинг: 0 / 0
MVC, проблема с IE
    #37665834
Scheduler
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Похоже, что не в типах дело, а вот в том, что предварительно надо сделать

Код: c#
1.
            Response.ClearHeaders();



?!

Без этого, какой бы не подставил contentType, в том числе и "force-download" не в IE грузится ни чего.
В заголовках наверное что-то непонятное иэксплореру
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC, проблема с IE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]