2016-07-06 32 views
0

我已經創造了Kentico 9調度工作,打電話,得到的Instagram圖片, 在作業同一URL的Response.Redirect

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

既然你在計劃任務中運行我懷疑你的RequestContext將不包含有效的參數。這個靜態類期望在HTTP請求的上下文中使用。您是否嘗試過在第一個代碼塊中對returnUrl變量進行硬編碼以消除這種擔憂? – getsetcode

+0

@getsetcode是對的。也許你可以分享你得到的例外...... – rocky

回答

0

剛剛看了一下HttpResponse.Redirect Method

當您使用此方法在頁面處理程序終止請求一個頁面,並開始爲另一個頁面的新要求,設置endResponse爲false,然後調用CompleteRequest方法。如果您爲endResponse參數指定true,則此方法會爲原始請求調用End方法,該方法在完成時會引發ThreadAbortException異常。此異常對Web應用程序性能有不利影響,因此建議爲endResponse參數傳遞false。有關更多信息,請參閱End方法。

所以,我認爲你應該使用:

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

也許它會幫助你

或者你應該檢查什麼網址在這裏:

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