Таким образом, делается запрос к контроллеру / действию ASP.net MVC. С этим связан сеанс. В рамках действия мы создаем экземпляр объекта WebClient и вызываем ресурс, который находится на том же сайте.
Однако, несмотря на то, что это тот же сайт, тот же пул приложений, поскольку WebClient создает новый запрос, у него другой сеанс. (Я знаю, что вы думаете, если он находится в том же пуле приложений, на том же сайте, зачем нужен WebClient). Я оставил эти детали, чтобы не мутить воду, но для WebClient есть причина.
Насколько я понимаю, если веб-клиенту могут быть назначены файлы cookie из исходной коллекции Request.Cookies, то ASP.net сможет искать существующий сеанс на основе существующих файлов cookie.
Думаю, есть 2 вопроса:
- Это правильно, и если бы я должен был назначить файлы cookie (каким-то образом) веб-клиенту, запрос, созданный веб-клиентом, в конечном итоге получил бы сеанс исходного запроса.
- Как я могу назначить текущий Request.Cookies WebClient?
ОБНОВЛЕНИЕ
Я просмотрел и попробовал как Использование CookieContainer с классом WebClient, так и Отправка файлов cookie с использованием HttpCookieCollection и CookieContainer, и я не нашел рабочего решения.
У нас есть связанное решение Umbraco и asp.net MVC, и мы используем веб-клиент, чтобы сделать запрос в Umbraco для страницы. В своем исследовании я также обнаружил, что могут быть другие факты, которые могут привести к тому, что файлы cookie не будут работать так, как я описал выше. Итак, я предполагаю, что первая задача - выяснить, позволит ли весь бит о файлах cookie получить исходный сеанс? Или есть лучший способ сделать то, что мы делаем?