public async Task<ActionResult> YahooCalendar(int id, string start, string end)
{
Event_ViewModel eventDetails = _ieventService.GetEventDetailsById(id);
DataAccess.event_dates eventObject = new DataAccess.event_dates();
eventObject.event_date_start = Convert.ToDateTime(start);
eventObject.event_date_stop = Convert.ToDateTime(end);
eventObject.event_date_place = eventDetails.event_place;
string eventInfo1 = eventDetails.event_infotext != null ? eventDetails.event_infotext : eventDetails.event_public_info;
eventObject.event_date_info = eventDetails.event_name + eventInfo1;
Session["eventObjYahoo"] = eventObject;
Session["yahooEventName"] = eventDetails.event_name;
Session["eventURL"] = Request.ServerVariables["HTTP_REFERER"];
string clientId = ConfigurationManager.AppSettings["YahooClientId"];
string clientSecret = ConfigurationManager.AppSettings["YahooClientSecret"];
string redirectUrl = ConfigurationManager.AppSettings["YahooRedirectURL"];
var url = "https://api.login.yahoo.com/oauth2/request_auth?client_id="+clientId+"&redirect_uri="+redirectUrl+"&response_type=code&language=en-us";
return Redirect(url);
}
[HttpGet]
public async Task<ActionResult> YahooAuth(string code)
{
DataAccess.event_dates eventObject = (DataAccess.event_dates)Session["eventObjYahoo"];
string clientId = ConfigurationManager.AppSettings["YahooClientId"];
string clientSecret = ConfigurationManager.AppSettings["YahooClientSecret"];
String encoded = Convert.ToBase64String(Encoding.GetEncoding("ISO-8859-1").GetBytes(clientId + ":" + clientSecret));
var client = new RestClient("https://api.login.yahoo.com/oauth2/get_token");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Basic " + encoded);
request.AddHeader("content-type", "application/x-www-form-urlencoded");
request.AddParameter("grant_type", "authorization_code");
request.AddParameter("redirect_uri", "oob");
request.AddParameter("code", code);
IRestResponse response = client.Execute(request);
string eventStart = Convert.ToDateTime(eventObject.event_date_start).ToString("yyyyMMddTHHmmss");
string eventStop = Convert.ToDateTime(eventObject.event_date_stop).ToString("yyyyMMddTHHmmss");
string eventName = Session["yahooEventName"].ToString();
string eventUrl = Session["eventURL"].ToString();
var calURL = "http://calendar.yahoo.com/?v=60&TITLE=Eventry&DESC="+eventObject.event_date_info+"&ST="+eventStart+"&ET="+eventStop+"&in_loc="+eventObject.event_date_place";
return Redirect(calURL);
}
При нажатии кнопки календаря я захожу в YahooCalendar, где я получаю всю информацию о событии и сохраняю ее в сеансе.затем после авторизации меня перенаправляют в YahooAuth, где я извлекаю значение из сеанса и отправляю его в календарь Yahoo.
Эта функция прекрасно работает на локальном и промежуточном сервере, но на рабочем сервере (действующий сайт) - состояние сеансаистекает срок действия, и я получаю сообщение об ошибке «Объект не установлен в качестве экземпляра объекта».
Кто-нибудь знает, почему он работает в локальной / рабочей среде, а не в оперативном режиме, и как сохранить состояние сеанса в оперативном режиме?Любая помощь будет оценена.