IE показывает диалог «Сохранить как» на странице Загрузка - MVC - PullRequest
2 голосов
/ 23 июня 2011

Я использую MVC 3 Razor, и я получаю диалоговое окно «Сохранить как» с «неизвестным типом файла», а содержимое - это страница Html время от времени на нескольких страницах сайта, это диалоговое окно отображается в IE.и в Firefox он отображает страницу с сообщением об ошибке «Ошибка синтаксического анализа XML».

иногда, когда появляется «сохранить как», я проверял заголовки ответа и показывает, что «тип содержимого» в htmlстраница "application / xhtml + xml; charset = utf-8", я не установил эти заголовки на стороне сервера.

Проблема в том, что это происходит не всегда, этоприходит и уходит, а не на определенной странице.

Я не использую ajax на сайте, а также я попытался переустановить aspnet в соответствии с некоторыми другими потоками, я также проверил этот поток относительно заголовков ответов, но я все еще получаю эту проблему.

Примечание: Я использую Image Controller с ActionResult для возврата изображений из БД в виде файла, подобного так

Function GetImage(ByVal id As Integer?) As ActionResult


        Dim record = rep.GetArticlePhoto(id)


        Return MyBase.File(record.ArticlePhotoContent.ToArray, "image/jpeg")



End Function

Ответы [ 2 ]

2 голосов
/ 24 июня 2011

получается, что при использовании

MyBase.File(img.GetBytes, "image/jpeg")

вернет FileContentResult

и если вы используете

MyBase.File(Server.MapPath("~/content/images/na.png"), "image/png")

он будет использовать другую перегрузку, которая возвращает объект другого типа, FilePathResult

разные перегрузки возвращают разные типы объектов - вот как я это пропустил

похоже, что другие имели некоторые проблемы с FilePathResult, поэтому я поменял его местами, и на данный момент работает нормально.

0 голосов
/ 23 июня 2011

Наиболее вероятная причина, по которой иногда xhtml+xml, заключается в том, что ваша страница генерирует ошибку и возвращает страницу исключений .net по умолчанию. Это может произойти, потому что ArticlePhotoContent - это Nothing, когда вы используете .ToArray() или, возможно, даже record - это Nothing.

Я бы изменил вашу функцию следующим образом.

Function GetImage(ByVal id As Integer?) As ActionResult
    Dim record = rep.GetArticlePhoto(id)
    If(record IsNot Nothing AndAlso record.ArticlePhotoCount IsNot Nothing) Then
        Return MyBase.File(record.ArticlePhotoContent.ToArray, "image/jpeg")
    Else
        Return New HttpNotFoundResult()
    End If
End Function

Однако это не учитывает, что rep.GreatArticlePhoto может вызвать исключение. Вы можете обернуть его в блок try-catch.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...