Asp.net mvc 为什么GetResponseStream不对从MVC Razor视图获取的数据执行服务器响应cookie?
我在IIS上有一个.net网站,它有一个指向MVC应用程序的虚拟目录。我正在尝试重用RAzor视图标题上的sitemaster.master 我在Razor视图_heard_it.cshtml上有下面的代码 我正在test.aspx页面上做一个StreamReader,它只有一个sitemaster.master。req.GetResponse确实从sitemaster(菜单栏等)返回流。但是sitemaster.master有Request.Cookies,Cookies永远没有值。我知道它们应该有一个值,因为我已经在mvc应用程序之外进行了测试。cookie会更改sitemaster的视图,这就是我需要它的原因 //此代码确实返回流Asp.net mvc 为什么GetResponseStream不对从MVC Razor视图获取的数据执行服务器响应cookie?,asp.net-mvc,razor,Asp.net Mvc,Razor,我在IIS上有一个.net网站,它有一个指向MVC应用程序的虚拟目录。我正在尝试重用RAzor视图标题上的sitemaster.master 我在Razor视图_heard_it.cshtml上有下面的代码 我正在test.aspx页面上做一个StreamReader,它只有一个sitemaster.master。req.GetResponse确实从sitemaster(菜单栏等)返回流。但是sitemaster.master有Request.Cookies,Cookies永远没有值。我知道它们
WebRequest req = HttpWebRequest.Create(url );
req.Method = "GET";
string source;
using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
source = reader.ReadToEnd();
Response.Write(source); // I get HTML result back from my sitemaster.master.
Cookie在请求头中发送,而您不在此处向webrequest添加任何Cookie 我在CookieContainer中添加了cookie。此代码正在成功运行。
此代码位于Razor视图_header_it.cshtml中:
@{
string userTyp3 = Request.Cookies["MY_USERTYPE"] != null ? Server.UrlDecode(Request.Cookies["MY_USERTYPE"].Value) : "";
CookieCollection _CookieCollection2 = new CookieCollection();
HttpWebRequest _request2 = (HttpWebRequest)WebRequest.Create("http://MySite_TEST/it/test.aspx");
_request2.Method = "GET";
_request2.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
_request2.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)";
_request2.Referer = "http://MySite_TEST/it";
_request2.KeepAlive = true;
//Here is auth cookie, works fine
_request2.CookieContainer = _cookieContainer;
_request2.CookieContainer.Add(( new Cookie ( "MY_USERTYPE", userTyp3 , "/", "MySite_TEST") )) ;
_request2.Headers.Add(HttpRequestHeader.CacheControl, "no-cache=set-cookie");
HttpWebResponse _response2 = (HttpWebResponse)_request2.GetResponse();
StreamReader _reader2 = new StreamReader(_response2.GetResponseStream());
Response.Write(_reader2.ReadToEnd()); //
_response2.Close();
_reader2.Close();
}
我在此URL上使用了以下示例:
http://stackoverflow.com/questions/2476092/login-website-curious-cookie-problem?rq=1]
多谢各位