我需要獲取控制器/操作的HTML標記以生成PDF。我所做的是:HttpWebRequest - ASP .NET MVC 3傳遞會話狀態
public ActionResult Index()
{
Session["Message"] = "SESSION-MESSAGE";
String URL = "http://localhost:7401/Home/SuperComplex";
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(URL);
req.CookieContainer = new CookieContainer();
for (int i = 0; i <= this.Request.Cookies.Count - 1; i++)
req.CookieContainer.Add(
new System.Net.Cookie(
name: this.Request.Cookies[i].Name,
value: Request.Cookies[i].Value,
path: Request.Cookies[i].Path, domain: this.HttpContext.Request.Url.Host)
);
using (var r = req.GetResponse())
{
using (var s = new StreamReader(r.GetResponseStream()))
{
var htmlToPrint = s.ReadToEnd();
Response.Write("<h1>" + htmlToPrint + "</h1>");
}
}
return View();
}
考慮到上面所說的情況,在超複合會話,我應該有會話[「消息」。但由於一些奇怪的原因,它不會去那裏。
我檢查了Session.SessionId - 在這兩種情況下它都是一樣的。
此外,在第二個或第三個請求,請求超時!
還是那句話:http://localhost:7401/(S(SESSION_ID))/Home/About
如果需要在其他瀏覽:會話劫持確實發生了 - 但WebRequest的模具! :(
幫助 - ?任何人
它是特定於ASP.NET MVC 4(。如果是這樣,請將標籤更改爲'asp.net-mvc-4'。如果沒有,請更改您問題的標題 – 2012-02-20 19:05:58
謝謝Ofer - 修正了標題 – effkay 2012-02-20 19:06:45
您沒有使用webrequest獲取從你自己的網站的HTML不是嗎?有更好的手段。 – usr 2012-02-20 20:01:49