Я пытаюсь распечатать веб-страницу на принтере по умолчанию на веб-сервере.Я нашел Святой Грааль , и он работает, но печатает страницу входа в систему, а не целевую страницу, что имеет смысл, потому что контроллер требует авторизации, используя членство asp.net с настройкой запаса.Я нашел эту запись , где упоминается, что вы можете использовать интерфейсы DOM, если используете формы auth (думаю, это я), но я не уверен, как это сделать.Похоже, это позволит браузеру перейти на страницу входа в систему и опубликовать имя пользователя / пароль, чтобы, наконец, попасть на целевую страницу?Любое представление о том, как лучше поступить, было бы очень полезно, я бы не подумал, что это будет связано с печатью уже отрисованной страницы (хотя на стороне сервера печати это действительно имеет смысл).Спасибо!
Редактировать: Это работает: (очевидно, cookie - это то, что вы не можете установить в браузере. Навигация при вызове метода)
HttpCookie cookie = Request.Cookies[".ASPXAUTH"];
InternetSetCookie(htmlPath, ".ASPXAUTH", cookie.Value);
browser.Navigate(htmlPath);
while (browser.ReadyState != WebBrowserReadyState.Complete)
Application.DoEvents();
dynamic ie = browser.ActiveXInstance;
ie.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, PRINT_WAITFORCOMPLETION);
и отдельно:
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData);
Это можно улучшить, используя ваш код, чтобы получать cookie-файл формы, а не по имени в качестве моего кода.