ASP.NET中的Facebook频道文件
本文关键字:频道 文件 Facebook 中的 NET ASP | 更新日期: 2023-09-27 18:23:36
根据facebook的Javascript SDK,facebook应用程序应该在其init代码中包含"通道文件"。如下所示: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');
?>
问题是,AFAIK,这是用asp.net无法完成的,因为我无法将c#代码放在html文件中。
所以与此同时,我只是添加了硬编码,比如:
<head>
<meta http-equiv="cache-control" content="max-age=31536000;public" />
<meta http-equiv="expires" content="31536000" />
</head>
我不确定这样做是否正确,因为"过期"应该以特定的日期格式给出。
有什么想法吗?我该怎么做?也许我可以为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; } } }
请确保您引用FB.init函数中的URL:
channelUrl:'//WWW.YOUR_DOMAIN.COM/fbchannel.ashx',
频道文件是可选的,但建议使用,频道文件用于解决某些浏览器中的某些跨域通信问题(从您的域到facebook.com),只要它返回API描述的内容,您就可以使用channel.aspx。建议web应用程序缓存通道文件,请阅读本文了解asp.net如何处理缓存:http://msdn.microsoft.com/enus/library/xsbfdd8c(v=vs.71).aspx
并阅读您描述的链接中的"通道文件"主题以了解更多信息。