문제

모바일 (휴대폰) 장치에서 볼 웹 사이트를 개발하고 있습니다. 나는 단지 일반 HTML 4.01을 사용하고 있습니다. 이 페이지는 Nokia Series 40 1-5th Edition을 제외하고 테스트 한 모든 모바일 브라우저에서 정상적으로 렌더링됩니다. 면밀히 검사하면 IIS가 컨텐츠 유형으로 HTML을 자동으로 렌더링하는 것으로 보입니다. text/vnd.wap.wml 대신에 text/html. WAP를 사용하지 않으므로 페이지에 오류가 발생하지 않습니다.

ASP.NET MVC 1.0을 사용하고 있으므로 추가했습니다 ActionFilterAttribute 컨텐츠 유형을 무시합니다. 이 코드는 실행되지만 여전히 클라이언트 측에서 vnd.wap.wml로 나옵니다.
이 doctype를 사용하고 있습니다.

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

vnd.wap.wml이 첫 번째라는 점에 주목할 가치가 있습니다. Accept-Encoding 모바일 브라우저에 의해 지정되어 있으므로 IIS7이 이런 이유로 제공한다고 가정합니다. 그리고 MVC가 구체적으로 .html (또는 .aspx) 파일을 참조하지 않으므로 MIME 유형이 건너 뛸 수 있습니까? 나는 이것이 아마도 코드 고정보다는 IIS 수정이라고 생각합니다.

모든 도움이 감사합니다!

도움이 되었습니까?

해결책

ActionFilter를 올바르게 구현하지 않은 것으로 밝혀졌습니다. OnCeptionExecuted 메소드 외에 OnResulTexEcuted 메소드를 무시해야했습니다. 전체 속성은 다음과 같습니다 (필요한 경우 컨트롤러에 [htmloverridefilter]를 추가). 이것이 누군가를 돕기를 바랍니다.

internal class HtmlOverrideFilter : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    } 

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {
        filterContext.HttpContext.Response.ContentType = "text/html";
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top