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'而不是?
以下是通过此链接在asp.net中执行此操作的方法:
创建通用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',
| 归档时间: |
|
| 查看次数: |
1697 次 |
| 最近记录: |