문제
모바일 (휴대폰) 장치에서 볼 웹 사이트를 개발하고 있습니다. 나는 단지 일반 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";
}
}