0

我正在.Net 上开发一个 mvc 应用程序,它的扩展部分包含一个功能,可以将内容发布到不同的社交网络平台,如 Facebook、twitter 等。简而言之,它实际上是在不同的网络上自动发布指定的时间间隔和指定的时间。问题是发帖部分必须始终在后台匿名运行,与真实网站的状态没有任何联系,因此它可以随时检查时间/间隔和帖子。

目前我的控制器有一个递归函数,主要部分看起来像下面的代码,但就像在 mvc 中发生的那样,这个函数通过来自客户端浏览器的 url 调用启动,并且在调用之后浏览器进入等待状态,因为这个函数保持递归运行,直到浏览器在指定的无响应时间后取消请求。

当然这种行为并不理想,所以我想要的是:

  • 使该功能独立,并在服务器的后台持续运行。
  • 有人告诉我,如果我使用 WCF(Windows 通信基础)使其成为服务等工作,它会解决我的问题吗?我还没有 WCF,但如果能解决问题,我可以试一试。
  • 还有其他方法可以实现吗?

代码:

    while (status == "1")
        {

            if (totalRows > 0)
            {

                for (int i = 1; i < totalRows; i++)
                {
                    myPostArray[i] = myPosts.Tables["myPosts"].Rows[i]["Postmsg"].ToString();
    //…
    //Post to the platform through respected API
    //…

                    System.Threading.Thread.Sleep(3000000000);
                }
                status = true;
            } else if (myPosts.Tables[0].Rows.Count == 0)
            {
                status = false;
            }
            TheRepeater();
4

1 回答 1

2

您确实需要为此提供单独的服务,该服务将执行以下操作:

  • 接受来自您的 Web 应用程序的“开始处理”命令
  • 返回“已确认,现在将开始处理” - 这将结束您的 Web 应用程序和服务之间的通信,释放通信通道并将控制权返回给 Web 服务器(而不是超时)
  • 在您的服务中进行后台处理,可能在sleep周期结束时进行自动唤醒以进行下一次迭代
于 2012-08-04T10:54:59.500 回答