我发现了几个关于这个错误的不同问题,但似乎没有一个能概括我的情况。
我正在创建一个网站,该网站从我们公司的 Twitter 帐户中提取推文,并将其显示在社交墙上。我正在使用 C# asp.NET 网络表单。C# 代码使用 Linqtotwitter 库来处理身份验证和“推文拉取”。它抓取推文并将它们作为一长串 json 转储到 aspx 文件中。然后,我们有一个 jquery 脚本,它读取 json 并在页面上很好地显示推文。
该代码目前在我的开发箱上运行完美。但是当我将代码推送到生产环境时,我得到了这个 .NET 错误:
根据验证程序,远程证书无效
我将在这里稍微提供我的代码,但首先让我给你一些背景知识。我不知道这些信息是否相关,但谁知道。该网站实际上是一个更大项目的一部分,旨在将我们从营销中获得的几个微小的单页微型站点安装到一台服务器上,以减少它们造成的开销。这些微型站点都可以有不同的主机名,但它们指向相同的 IP 地址。httpmodule 位于该服务器上,并拦截所有传入的请求,并根据主机名将它们重定向到适当的子文件夹。
从我所做的研究来看,似乎 SSL 与这个错误有很大关系。我对 IT 世界还是很陌生,随着故障排除的进行,我正在学习更多关于 SSL 的知识。这些微型站点所在的服务器上确实有一些 SSL 证书,其中一个微型站点使用 SSL,但不是我目前正在处理的网站。但是,因为从这个意义上说,它们都共享相同的 IP 地址,所以它们是同一个网站。
这是 C# LinqtoTwitter 代码:
private SingleUserAuthorizer auth;
private TwitterContext twitterCtx;
protected void Page_Load(object sender, EventArgs e)
{
Response.ContentType = "application/json";
auth = new SingleUserAuthorizer
{
Credentials = new SingleUserInMemoryCredentials
{
ConsumerKey =
ConfigurationManager.AppSettings["twitterConsumerKey"],
ConsumerSecret =
ConfigurationManager.AppSettings["twitterConsumerSecret"],
TwitterAccessToken =
ConfigurationManager.AppSettings["twitterAccessToken"],
TwitterAccessTokenSecret =
ConfigurationManager.AppSettings["twitterAccessTokenSecret"]
}
};
if (auth.IsAuthorized)
{
twitterCtx = new TwitterContext(auth);
var tweetResponse =
(from tweet in twitterCtx.Status
where tweet.Type == StatusType.User &&
tweet.ScreenName == "OurProfile" &&
tweet.IncludeRetweets == true
select tweet)
.ToList();
Results.Text = twitterCtx.RawResult;
}
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (twitterCtx != null)
{
twitterCtx.Dispose();
twitterCtx = null;
}
}
有没有人知道这里可能是什么问题?就像我说的那样,我还是个新手,我什至不知道如何在 Google 之外解决这个问题。会不会是我们的服务器无法验证 Twitter 的 SSL 证书来自受信任的来源?让我知道我是否可以提供更多信息或更多代码。感谢您抽出宝贵时间阅读我的帖子!