2011-01-21 4 views
0

웹 서버의 기본 프린터에서 웹 페이지를 인쇄하려고합니다. 나는 the holy grail을 발견하고 작동하지만 로그인 페이지를 인쇄하지 않습니다. 대상 페이지가 아닌 컨트롤러가 재고 설정으로 asp.net 멤버쉽을 사용하여 인증해야하기 때문에 의미가 있습니다. 난 this writeup 찾을 어디 폼 인터페이스를 사용하는 경우 dom 인터페이스를 사용할 수 있습니다 언급 한 (나) 생각하지만 어떻게 할 수 있는지 모르겠습니다. 브라우저가 로그인 페이지를 클릭하고 마지막으로 대상 페이지를 누르기 위해 사용자 이름/비밀번호를 다시 게시하게하는 것 같습니다. 계속 진행하는 가장 좋은 방법에 대한 통찰력은 매우 도움이 될 것입니다. 이미 렌더링 된 페이지를 인쇄하는 것이 관련되어 있다고는 상상하지 못했을 것입니다. 감사!asp.net-mvc 컨트롤러가 인증을 요구하는 서버 쪽을 인쇄하려고합니다.

편집 :이 작품 :

  [DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)] 
      static extern bool InternetSetCookie(string lpszUrl, string lpszCookieName, string lpszCookieData); 

이 더 사용하여 개선 될 수 : 별도로

  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); 

과 (분명히 쿠키 당신이 browser.Navigate 메서드 호출에 설정할 수없는 한 가지입니다) 내 코드로 이름 대신 폼 쿠키를 가져 오는 코드.

답변

0

WebBrowser 컨트롤에는 추가 HTTP 헤더를 요청에 전달할 수있는 Navigate 메서드의 오버로드 메서드가 있습니다. 마지막 인수에서이 같은 쿠키 헤더를 전달할 수 :

browser.Navigate(htmlPath, null, null, "Cookie: authCookie=value" + Environment.NewLine); 

당신이 요청 쿠키에서 가져온 값으로 인증 웹 사이트가 예상 쿠키 value의 이름으로 authCookie를 교체해야 할 경우 분명히.

+0

고마워요! 나는 거기를보아야했다. 나는 가까운 생각이지만 여전히 로그인을하고있다. 편집을 참조한다. –

+0

은 쿠키를 문자열에 추가하는 것을 포함하여 다양한 시도를 해왔지만 브라우저 문서 쿠키가 여전히 null 인 내 로컬을 볼 때 그렇습니다. 어떤 아이디어가 빠졌습니까? Thanks –

+0

@Vince, 왜 쿠키 이름을 읽으려면 sessionState 섹션을 사용하고 있습니까? 여기서 인증에 대해 이야기하고 있습니다. 세션이 아닙니다. 그건 같은 것이 아닙니다. 이것을 대신해라 :'Request.Cookies [FormsAuthentication.FormsCookieName]'. –

관련 문제