2016-08-04 3 views
0

У меня есть следующий код:запрос к другому действию MVC изнутри действий

var url = Url.Action("JobDetailsPDF", "PdfController", new { orderid = model.OrderId }, Request.Url.Scheme); 

var request = new HttpRequestMessage(HttpMethod.Get, url); 
request.Headers.TryAddWithoutValidation("Cookie", Request.Headers["Cookie"]); 

var client = new HttpClient(); 

var response = await client.SendAsync(request); 
var result = await response.Content.ReadAsByteArrayAsync(); 

Атрибут Авторизоваться кажется держать перенаправляет запрос на экран входа в систему, даже несмотря на то, Auth печенье добавлены к запросу.

Почему я не могу отправить файлы cookie в другое действие на том же сайте, и если я могу, почему атрибут authorize перенаправляет запрос при добавлении файлов cookie?

Благодаря

+0

Вы должны переместить логику в действии, которое вы пытаетесь вызвать в свой класс, и использовать его в любом подходящем методе действий. Таким образом, вам не нужно называть его с помощью HTTP-запроса (и все накладные расходы, которые могут возникнуть) – DavidG

ответ

2

Это, как правило, плохая идея, чтобы сделать запрос HTTP от бэкэнд приложения к тому же серверному приложению.

Вы можете переместить логику из действия JobDetailsPDF под PdfController в некоторый общий класс, который может использоваться из обоих мест: JobDetailsPDF и текущее местоположение кода.

+0

Спасибо за ваш ответ, я начал рефакторинг, когда начал сталкиваться с проблемами, но я хотел понять, почему отправка файлов cookie из одного действие к следующему не работало. Вы случайно не знаете? – Jamez

+0

Первый запрос поступает из клиентского браузера (в нем хранятся файлы cookie), а второй запрос выполняется на вашем бэкэнд-сервере, в котором нет файлов cookie. – serhiyb

+0

Не добавление файлов cookie из входящего запроса включает файл cookie auth? – Jamez

Смежные вопросы