在Application_AuthenicationRequest()的Global.asax.cs文件中,我调用
Response.Redirect("~/?someparameter=parameter", false);
Context.ApplicationInstance.CompleteRequest();
在方法调用SingleSignOn()的同一个Global.asax.cs文件中,我创建并保存会话cookie
Response.Cookie.Add(cookie);
在同一个项目中,我有一个名为HomeController.cs的类,它包含一个名为Index()的方法,该方法包含以下代码行:
var queryString = System.Web.HttpContext.Current.Request.Params["parameter"];
应该由
调用Response.Redirect("~/?someparameter=parameter", false);
位于Global.asax.cs文件中。问题似乎是会话cookie没有保留,因此甚至没有达到HomeController.Index()。当我在我的机器上本地运行代码时,一切都按照我的预期运行。但是,一旦部署,呼叫就会失败。
答案 0 :(得分:1)
var queryString = System.Web.HttpContext.Current.Request.Params["parameter"];
应该是
var queryString = System.Web.HttpContext.Current.Request.Params["someparameter"];
如果你想得到someparameter的实际值
您的响应需要完成给客户端才能设置cookie。
通过致电;
Context.ApplicationInstance.CompleteRequest();
你结束了回复。
阅读本文;
http://www.aspnettutorials.com/tutorials/network/cookies-csharp/
您也可以只在同一个域上设置Cookie,因此如果您要更改域名,浏览器将无法设置Cookie。我不确定你为什么在响应中使用〜。
此外,有些浏览器不会在重定向上设置Cookie,因此请使用Google搜索哪些浏览器接受它。
希望这有帮助。