ASP.NET中的Facebook频道文件

Yan*_*niv 4 c# asp.net facebook

根据facebook的Javascript SDK,facebook应用程序应在其init代码中包含"Channel File".在这里发布:http: //developers.facebook.com/docs/reference/javascript/

我没有完全理解为什么他们需要它,或者该文件的内容应该是什么,但我只是使用他们的基本示例,因为它可能有助于某些特定问题.

我的问题是 - 他们说应该缓存这个'channel.html'文件.甚至举了一个如何用PHP缓存它的例子:

 <?php
 $cache_expire = 60*60*24*365;
 header("Pragma: public");
 header("Cache-Control: max-age=".$cache_expire);
 header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$cache_expire) . ' GMT');
 ?>
Run Code Online (Sandbox Code Playgroud)

事情是,AFAIK,因为我不能用asp.net把c#代码放在html文件中.

所以同时我只是添加硬编码,如:

<head>
    <meta http-equiv="cache-control" content="max-age=31536000;public" />
    <meta http-equiv="expires" content="31536000" />  
</head>
Run Code Online (Sandbox Code Playgroud)

我不确定这是否是正确的方法,因为"expires"应该以特定的格式日期给出.

任何想法我怎么能做对吗?也许我可以服务facebook'channel.aspx'而不是?

ROF*_*IME 5

以下是通过此链接在asp.net中执行此操作的方法:

  1. 创建通用HTTP处理程序(ashx文件):

    public class FacebookChannel : IHttpHandler
    {
    
        public void ProcessRequest(HttpContext context)
        {
    
            HttpResponse response = context.Response;
            response.ClearHeaders();
    
            const int cacheExpires = 60 * 60 * 24 * 365;
            response.AppendHeader("Pragma", "public");
            response.AppendHeader("Cache-Control", "max-age=" + cacheExpires);
            response.AppendHeader("Expires", DateTime.Now.ToUniversalTime().AddSeconds(cacheExpires).ToString("r"));
            context.Response.ContentType = "text/html";
            context.Response.Write("<script src=\"//connect.facebook.net/en_US/all.js\"></script>");        
        }
        public bool IsReusable { get { return false; } }
    }
    
    Run Code Online (Sandbox Code Playgroud)

确保引用FB.init函数中的URL :

channelUrl:'//WWW.YOUR_DOMAIN.COM/fbchannel.ashx',