2012-07-27 32 views
3

我下面Stephen Walther's指導和一切建立沒有錯誤。然而,一旦我在Chrome中運行該應用程序,我會收到以下錯誤消息:解析失敗清單:使用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

您是否設法解決了這個問題?我有同樣的錯誤 - 即使我清除了清單中除CACHE MANIFEST行之外的所有內容! – 2013-01-31 05:04:18

回答

2

TLDR:不添加緩存:在你的清單條目,不緩存代碼隱藏文件,並確保您註冊的HttpHandler在你的web.config

長的版本:

有你需要做的,使示例應用程序工作的幾件事情。首先是您創建的處理程序如上,在C#中的例子是:

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這樣的:

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

接下來創建一個Manifest.txt在你的網站的根目錄並填充它。示例中不應該有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> 

有了這個做,你現在就可以開始你的網站,瀏覽到在Firefox,你將被要求批准使其脫機。另外,啓動它在Chrome中,切換到開發工具,檢查資源選項卡,你就可以看到已經應用程序緩存節點下加載的資源:

Offline App running in Google Chrome

以及物品是否完整,你完成的代碼結構如下所示:

enter image description here

1

錯誤「應用程序緩存錯誤事件:無法解析清單」可以通過文本文件格式化造成的。

我的部署腳本生成的Unicode清單文件。該文件在Chrome瀏覽器(當轉到URL時)看起來很好,在在線驗證器上進行了驗證,但在用作清單時會生成此錯誤。

要修復文件,只需在記事本中打開清單文件並轉到「另存爲」並選擇UTF8。