Kentico计划任务

时间:2016-07-06 05:51:28

标签: asp.net instagram-api kentico

我在Kentico 9中创建了一个计划工作来调用并获取Instagram图像, 在工作中

string returnUrl = string.Format("{0}://{1}{2}", RequestContext.CurrentScheme, RequestContext.FullDomain, "/cmspages/sqd/instagramfeed.aspx").ToLower();
WebRequest wr = WebRequest.Create(new Uri(returnUrl));
try
{
    HttpWebResponse response = (HttpWebResponse)wr.GetResponse();
}
catch (Exception ex)
{
    //We know its going to fail but that dosent matter!!
}

所以这将转到/cmspages/sqd/instagramfeed.aspx,

 protected void Page_Load(object sender, EventArgs e)
    {

        EventLogProvider.LogInformation("Start Instagramfeed" , "1"); 

        if (!String.IsNullOrEmpty(Request["code"]) && !Page.IsPostBack)
        {
            code = Request["code"].ToString();
            ProcessAndDownloadInstagramImages();

            EventLogProvider.LogInformation("End Instagramfeed", "2");     
        }
        else
        {
            string returnUrl = string.Format("{0}://{1}{2}", Request.Url.Scheme, Request.Url.Host, "/cmspages/sqd/instagramfeed.aspx").ToLower();
            try
            {
                Response.Redirect(string.Format(ResHelper.GetString("SQD.Instagram.OauthUrl", "en-AU"), ResHelper.GetString("SQD.Instagram.ClientId", "en-AU").ToString(), returnUrl));
            }
            catch (Exception)
            {

                //Do nothing
            }       
        }
    }

所以在这里它将使用代码参数

重定向到相同的url

如果我在浏览器中直接运行/cmspages/sqd/instagramfeed.aspx网址,它可以正常运行,但是当我尝试使用作业时,页面加载中的Response.Redirect将会失败。

1 个答案:

答案 0 :(得分:0)

请阅读HttpResponse.Redirect Method

  

在页面处理程序中使用此方法终止对一个页面的请求并为另一个页面启动新请求时,请将endResponse设置为false,然后调用CompleteRequest方法。如果为endResponse参数指定true,则此方法为原始请求调用End方法,该方法在完成时抛出ThreadAbortException异常。此异常对Web应用程序性能有不利影响,这就是建议为endResponse参数传递false的原因。有关更多信息,请参阅End方法。

所以我认为你应该使用:

Response.Redirect("/url", false);
Context.ApplicationInstance.CompleteRequest();

也许它会帮助你

或者您应该查看此处的URL:

string.Format(ResHelper.GetString("SQD.Instagram.OauthUrl", "en-AU"), ResHelper.GetString("SQD.Instagram.ClientId", "en-AU").ToString(), returnUrl)