2012-07-27 2 views
3

나는 Stephen Walther's 가이드를 따르고 있으며 모든 것이 오류없이 작성됩니다. 그러나 크롬에서 응용 프로그램을 실행하면 다음과 같은 오류 메시지가 표시됩니다.Manifest를 파싱하지 못했습니다 : asp.net 사용

Application Cache Error event: Failed to parse manifest http://localhost/website/Manifest.ashx 

아무 것도 캐시되지 않습니다.

내가 here에서 수집 한 것으로부터, 나는 내 매니페스트에 타입 -o를 가지고 있습니다. 어쩌면 내가 잘못하고이 오류 메시지를 일으키는 것을 볼 수 있습니다.

Manifest.ashx :

<%@ WebHandler Language="C#" Class="JavaScriptReference.Manifest" %> 

using System; 
using System.Web; 

namespace JavaScriptReference { 

    public class Manifest : IHttpHandler { 

     public void ProcessRequest(HttpContext context) { 
      context.Response.ContentType = "text/cache-manifest"; 
      context.Response.WriteFile(context.Server.MapPath("Manifest.txt")); 
     } 

     public bool IsReusable { 
      get { 
       return false; 
      } 
     } 
    } 
} 

manifest.txt가 :

CACHE MANIFEST 

CACHE: 
Images/img1.jpg 
Images/img2.jpg 
JScript.js 
Default.aspx.vb 
# Does Default.aspx.vb even need to be cached? 
+1

해결하셨습니까? 나는 같은 오류가 있습니다 - 심지어 캐시 매니페스트 라인을 제외한 매니페스트의 모든 것을 없애 버릴 때도 있습니다! –

답변

2

TLDR :는 캐시 추가하지 마십시오 : 매니페스트에 항목을 캐시하지 않습니다 코드 숨김 파일을 열고 Web.Config에 HttpHandler를 등록했는지 확인하십시오.

긴 버전 :

샘플 앱을 작동시키기 위해해야 ​​할 일이 몇 가지 있습니다. 위와 같이 당신의 핸들러를 작성 먼저, C#의 예는 다음과 같다 manifest.txt가를 만들

<configuration> 
     <system.web>   
      <httpHandlers> 
       <add verb="*" path="Manifest.ashx" 
        type="CacheTest.Manifest, CacheTest" /> 
      </httpHandlers> 
     </system.web> 
    </configuration> 

다음은 :

using System.Web; 

namespace CacheTest 
{ 
    public class Manifest : IHttpHandler 
    { 

     public void ProcessRequest(HttpContext context) 
     { 
      context.Response.ContentType = "text/cache-manifest"; 
      context.Response.WriteFile(context.Server.MapPath("Manifest.txt")); 
     } 

     public bool IsReusable 
     { 
      get 
      { 
       return false; 
      } 
     } 
    } 
} 

다음은 당신이 좋아하는 당신의 Web.config에 핸들러를 등록해야 귀하의 웹 사이트의 루트에 넣고 그것을 채 웁니다. 샘플에는 내부에 CACHE : 제목이 없어야합니다. 실제 샘플은 다음과 같이 보일 수 있습니다.

CACHE MANIFEST 

# v30 

Default.aspx 

Images/leaping-gorilla-logo.png 

브라우저가 요청할 수있는 실제 자원에 대한 상대 경로 만 파일 뒤에 캐시하지 않습니다. 마지막으로 Default.aspx 파일을 추가하십시오. 뒤에 코드를 무시하지만, 초기 HTML 태그는 HttpHandler를를 참조 할 수 있도록 마크 업을 편집, 전체 마크 업 : 이것은 당신이 지금 당신의 웹 사이트를 시작할 수 있습니다 수행으로

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CacheTest.Default" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml" manifest="Manifest.ashx"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <div> 
     This is a sample offline app! 
    </div> 
    </form> 
</body> 
</html> 

을, 파이어 폭스에서 찾아 당신은 권한을 묻는 메시지가 표시됩니다 오프라인으로 가져 가야합니다. 또한, 개발자 도구로 전환, 크롬에서 그것을 불 리소스 탭을 확인하고 응용 프로그램 캐시 노드 아래에로드 된 리소스를 볼 수있을 것이다 :

Offline App running in Google Chrome

그리고 완전성에 대해

을,

enter image description here

1

오류 "응용 프로그램 캐시 오류 이벤트 : 매니페스트 구문 분석하지 못했습니다"이 텍스트 파일의 포맷에 의해 발생할 수 있습니다 완성 된 코드 구조는 다음과 같다됩니다.

내 배포 스크립트가 유니 코드로 매니페스트 파일을 생성했습니다. Chrome에서 파일 (URL로 이동할 때)은 온라인 검사기에서 유효성을 검사했지만 매니페스트로 사용할 때이 오류가 발생합니다.

파일을 수정하려면 메모장에서 매니페스트 파일을 열고 "다른 이름으로 저장"으로 이동하여 UTF8을 선택하십시오.

관련 문제