이미 주제에 관한 많은 기사를 읽었지만 해결책을 찾을 수 없습니다. 다른 솔루션이 작동하지 않으며 최신 버전이기 때문에이 질문을 중복으로 표시하지 마십시오.새로운 HttpWebRequest에서 현재 세션 공유하기
GridView (행당 하나의 버튼)가 포함 된 페이지가있는 웹 응용 프로그램이 있습니다. 단추는 HttpWebRequest (또는 WebClient, 동일 함)를 만들고 html을 가져옵니다.
하나의 쿠키 또는 모든 쿠키를 사용하여 시도했지만 성공하지 못했습니다.
String path = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/");
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(path + "MyPage.aspx");
CookieContainer cookieContainer = new CookieContainer();
HttpCookie httpCookie = HttpContext.Current.Request.Cookies.Get("ASP.NET_SessionId");
if (httpCookie != null)
{
Cookie myCookie = new Cookie();
// Convert between the System.Net.Cookie to a System.Web.HttpCookie...
myCookie.Domain = webRequest.RequestUri.Host;
myCookie.Expires = httpCookie.Expires;
myCookie.Name = httpCookie.Name;
myCookie.Path = httpCookie.Path;
myCookie.Secure = httpCookie.Secure;
myCookie.Value = httpCookie.Value;
cookieContainer.Add(myCookie);
}
webRequest.CookieContainer = cookieContainer;
string responseHTML = string.Empty;
using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
{
using (Stream responseStream = response.GetResponseStream())
{
using (StreamReader responseReader = new StreamReader(responseStream))
{
responseHTML = responseReader.ReadToEnd();
}
}
}
webRequest.GetResponse
가 타임 아웃을 얻을 것이다 : 이 코드입니다. 문제는 도메인 (localhost)이라고 생각합니다. 가능하지 않지만 도메인이 없으며 web.config에서 가짜 도메인을 만들지 않습니다. 또한 나는 성공없이 가짜 도메인을 사용하여 시도했다. 다음 줄은 세션을 공유하지 않고 잘 작동
webRequest.CookieContainer = cookieContainer;
없이
. 도메인을 설정해야합니다. 그렇지 않으면 상대 오류가 발생합니다.
니스 솔루션하지만 난 세션에서 작성해야합니다. 첫 번째 페이지 쓰기, 두 번째 읽기. 그렇지 않으면 나는 querystring을 사용했을 것이다. 프로그램이 너무 오래되어 일부 페이지를 수정하지 않으려 고합니다. 다른 아이디어? @John Wu – Emanuele
예, [this] (https://msdn.microsoft.com/en-us/library/caxa892w(v=vs.110) .aspx). –
내 코드는 어디에서? – Emanuele