2016-07-06 2 views
0

Я создал задание расписания в Kentico 9 позвонить и получить Instagram изображения, В работеже URL Response.Redirect в Kentico расписании задачи

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 URL в браузер работает без каких-либо проблем, но когда я пытаюсь выполнить задание Response.Redirect в загрузке страницы не удастся.

+1

Поскольку вы работая в запланированной задаче, я подозреваю, что ваш RequestContext не будет содержать допустимые параметры. Этот статический класс предполагается использовать в контексте HTTP-запроса. Вы пытались жестко кодировать переменную returnUrl в своем первом блоке кода, чтобы устранить эту проблему? – getsetcode

+0

@getsetcode является правильным. Может быть, вы можете поделиться тем исключением, которое вы получаете ... – rocky

ответ

0

Просто читать о HttpResponse.Redirect Method

При использовании этого метода в обработчике страницы, чтобы завершить запрос на одной странице и начать новый запрос на другую страницу, установите endResponse ложь, а затем вызвать метод CompleteRequest. Если вы укажете true для параметра endResponse, этот метод вызывает метод End для исходного запроса, который генерирует исключение ThreadAbortException при его завершении. Это исключение оказывает пагубное влияние на производительность веб-приложения, поэтому рекомендуется передавать false для параметра endResponse. Для получения дополнительной информации см. Метод 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) 
Смежные вопросы