2012-01-18 3 views
2

ASP.NET 사이트에 .MHT 파일에 대한 링크가있는 페이지가 있으므로 사용자가 링크를 클릭하면 브라우저에서 MHT 파일을 봅니다.잘못된 MIME 형식을 보낼 때 IIS 7이 포함 된 IE에 .mht 파일을 표시 할 수 없음

.mht message/rfc822 
:

우리가 가지고
HTTP/1.1 200 OK 
Cache-Control: private 
Transfer-Encoding: chunked 
Content-Type: application/octet-stream 
Server: Microsoft-IIS/7.5 
X-AspNet-Version: 2.0.50727 
X-Powered-By: ASP.NET 
Date: Wed, 18 Jan 2012 18:45:19 GMT 

이미이 같은 기본에 따라 올바르게 구성된 MIME 타입을 IIS :

문제는 빈 표시하고 IIS가 함께 전송 헤더는 다음과 같이이다이다

우리 시스템에서 파일 시스템으로 파일을 열면 Internet Explorer에서 파일 시스템을 올바르게 표시하므로 IIS에서 IIS가 파일과 함께 보내는 헤더에 문제가있는 것으로 나타났습니다.

IIS가 MHT 파일을 올바르게 표시하지 못하게하는 이유는 무엇입니까? 어떤 해결책?

고맙습니다.

UPDATE는

우리는 지금 여러 가지 해결 방법을 생각 : 내 옆에 대답을 참조하십시오.

* 모두에게 감사드립니다.

+0

http://stackoverflow.com/questions/3477199/binarywrite-of-mht-file-is-not-treated-as-mht-by-ie –

+0

감사합니다 토마스,하지만 그 질문에 표시된 상황은 우리와 다릅니다. 우리는 ASP.NET 코드에서 파일을 전달하지 않고 서버에있는 MHT 파일에 대한 직접 링크이며 IIS는 파일을 단독으로 전달합니다. 그리고 문제는 명시된 바와 같습니다 : IIS가 잘못된 Content-Type을 보내고 있으므로 해당 질문에 대한 답변으로 multipart/related로 설정할 수 없습니다. 감사. – kzfabi

+0

하지만 IIS를 사용할 수 없을 때 작업을 수행 할 사용자 지정 처리기에 확장을 매핑 할 수 있습니다. –

답변

1
  1. 사용 HTTP 처리기 : processRequest 메소드이 추가 안에, 뒤에 처리기의 코드에서

    <add verb="GET" path="*.mht" type="WebApplication1.Handler1" /> 
    

    B) :

    A) system.web 아래의 Web.config에서 유사한 노드를 추가 :

    context.Response.ContentType = "message/rfc822"; 
    context.Response.Write(System.IO.File.ReadAllText(context.Server.MapPath(context.Request.FilePath))); 
    
  2. 사용 ISAPI 필터는 C로 보내기 전에 Content-Type 헤더를 변경하려면 lient. 대상 서버에 따라 Windows 7 SDK (Server 2008 R2 용) 또는 olrder SDK가 필요합니다.

    가)

    을 Application_PreSendRequestContent 또는 b) Application_PreSendRequestHeaders이의

    단점을 : Global.asax에에서

  3. , 이러한 이벤트 중 하나로, 콘텐츠 유형의 헤더 값을 변경 당신 것 모든 전화를 가로 채십시오.

  4. CGI 스크립팅을 사용하여 Content-Type 헤더 값을 변경하십시오.

HTTP 처리기 솔루션을 사용하기로 결정했습니다.

감사합니다,

파비안 페르난데스

0

당신은 모든 계산에 올바른 위치 :

1) 내가 로컬 브라우저 구성입니다보고 싶은데 우선 - 당신이 IE 로컬 파일을 올바르게

2)를 여는 것을 확인했습니다 두 번째로 살펴볼 것은 IIS 콘텐츠 헤더입니다. 맞습니다. MS HTML (.mht) 파일의 올바른 MIME 유형은 "message/rfc822"여야합니다. Content-Type은 "application/octet-stream"이어야합니다.

http://social.msdn.microsoft.com/Forums/en-US/vbgeneral/thread/d94c0d4e-0d32-4648-bdd6-dc3f28bb4797/

+0

귀하의 빠른 답변 주셔서 감사하지만 우리는 이미 그 링크로 향하고 거기에 아무 결과와 함께 제공되는 솔루션을 시도, 문제는 솔루션을 제공하는 클라이언트이며 우리는 서버가 제대로 mht 파일을 제공 할 수 있어야합니다. 감사! – kzfabi

0

이 당신의 asp.net 응용 프로그램과 동일한 웹 응용 프로그램에있는이 .mht 파일입니다

3)이 링크는 다른 대안의 몇 가지를 제안? 다른 웹 응용 프로그램/가상 디렉토리/웹 서버에있는 경우 특정 위치에 대한 MIME 유형을 확인해야합니다.

동일한 웹 응용 프로그램에있는 경우 동일한 시스템의 웹 응용 프로그램과 웹 사이트간에 MIME 형식이 다를 수 있으므로 IIS에서 해당 웹 응용 프로그램의 MIME 형식을 선택했는지 확인하십시오.

+0

답변 해 주셔서 감사합니다. 예, MHT 파일은 ASP.NET 사이트와 동일한 웹 서버에 있습니다. 또한 예, 우리는 ISS 서버와 응용 프로그램의 MIME 유형과 마지막으로 "상속 된"MIME MIME 유형을 확인 했으므로 IIS MIME 유형의 구성을 사용하고 있습니다. 질문. 감사! – kzfabi

관련 문제