0

我最近开始在我的 Twitter 个人资料中部署我功能齐全的 Twitter 机器人(它应该每天左右发布一个新的短篇故事)。它通过 Azure 上的 CRON 作业调用,并托管在 MVC 4 项目中。

但是,当我尝试在 Azure 中运行它(请记住,它在本地运行良好)时,我收到以下错误:

[NetworkInformationException (0x5): Access is denied]
   System.Net.NetworkInformation.SystemIPGlobalProperties.GetFixedInfo() +9059627
   System.Net.NetworkInformation.SystemIPGlobalProperties.get_FixedInfo() +172
   System.Net.NetworkInformation.SystemIPGlobalProperties.get_DomainName() +269
   System.Net.CookieContainer..ctor() +121
   Hammock.Web.WebQuery.AppendCookies(HttpWebRequest request) +242
   Hammock.Web.WebQuery.SetRequestMeta(HttpWebRequest request) +147
   Hammock.Web.WebQuery.HandleRequestMeta(WebRequest request) +146
   Hammock.Web.WebQuery.BuildPostOrPutFormWebRequest(PostOrPut method, String url, Byte[]& content) +680
   Hammock.Web.WebQuery.BuildPostOrPutWebRequest(PostOrPut method, String url, Byte[]& content) +168
   Hammock.Web.WebQuery.ExecutePostOrPut(PostOrPut method, String url, WebException& exception) +181
   Hammock.Web.WebQuery.Request(String url, WebException& exception) +252
   Hammock.Authentication.OAuth.OAuthWebQuery.Request(String url, WebException& exception) +157
   Hammock.RestClient.RequestImpl(RestRequest request) +943
   Hammock.RestClient.Request(RestRequest request) +74
   TweetSharp.TwitterService.WithHammockImpl(RestRequest request) +83
   TweetSharp.TwitterService.WithHammock(WebMethod method, String path) +120
   TweetSharp.TwitterService.SendTweet(SendTweetOptions options) +782

我认为这是因为它使用了 Azure 不支持的端口或类似的端口。或者是吗?我不知道从哪里开始解决这个问题,当我搜索它时,在网上找不到任何帮助。

这是我的代码。如您所见,访问令牌和机密是硬编码的,它们(就像我说的)在本地工作:

var service = new TwitterService("qwdwqdqwd", "qwdwqdqwdqwd");
service.AuthenticateWith("qwdqwdqwdqwd", "qwdqwdqwdwqd");

var status = "Collaborative short story of the day: Blah";
var response = service.SendTweet(new SendTweetOptions() {Status = status}); //crash!

问题是什么?

4

2 回答 2

1

你在Azure Web Siteor中运行你的项目Azure Cloud Service

鉴于 StackTrace,并对其进行挖掘似乎SystemIPGlobalProperties使用了一些不安全的方法。使用不安全的方法需要完全信任

注意 使用不安全上下文编写的代码无法验证是否安全,因此只有在代码完全受信任时才会执行。换句话说,不安全的代码不能在不受信任的环境中执行

此外,对系统组件的低级别访问可能需要提升权限。Windows Azure 网站不支持完全信任,因此您无法在 Azure 网站中运行此代码。

如果您运行云服务,请确保您的代码在 Full Trust 中运行。如果这确实有帮助,那么以提升的权限运行您的代码。(runtime您的 csdef 文件中的元素)


于 2013-06-05T09:55:56.497 回答
0

问题自己解决了。我让网站运行了几个星期,突然间,我注意到来自该帐户的推文。CRON 作业每天都在运行,并且有很多错误 500 消息,但突然之间(没有接触代码),它工作了。

一定是 Azure 团队进行了一些底层更改。

于 2013-06-17T07:12:20.850 回答