Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 响应。重定向不保留会话cookie_C#_.net_Session_Redirect_Cookies - Fatal编程技术网

C# 响应。重定向不保留会话cookie

C# 响应。重定向不保留会话cookie,c#,.net,session,redirect,cookies,C#,.net,Session,Redirect,Cookies,在我的Global.asax.cs文件中,我调用 在同一个Global.asax.cs文件中的方法调用SingleSignOn()中,我创建并保存了会话cookie Response.Cookie.Add(cookie); 在同一个项目中,我有一个名为HomeController.cs的类,其中包含一个名为Index()的方法,该方法包含以下代码行: var queryString = System.Web.HttpContext.Current.Request.Params["paramet

在我的Global.asax.cs文件中,我调用

在同一个Global.asax.cs文件中的方法调用SingleSignOn()中,我创建并保存了会话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()。当我在我的机器上本地运行代码时,一切都像我期望的那样工作。但是,一旦部署,调用就会失败

var queryString = System.Web.HttpContext.Current.Request.Params["parameter"];
应该是

var queryString = System.Web.HttpContext.Current.Request.Params["someparameter"];
如果您想获得someparameter的实际值

您需要完成对客户端的响应,以便设置cookie

通过呼叫

Context.ApplicationInstance.CompleteRequest();
你要结束回应了

读这篇文章

您也只能在同一个域上设置cookie,因此如果您正在更改域,浏览器将不会设置cookie。我不知道你为什么在回复中使用~

除此之外,有些浏览器不会在重定向上设置cookie,所以在谷歌上搜索一下哪些浏览器会接受它


希望这有帮助。

1)你的目标是什么,你到底想做什么?你在找安全机制吗?单点登录的方式?或者别的什么?2)接下来问题需要澄清该事件为
AuthenticateRequest
,当安全模块已确定用户身份时发生。你说的是
应用程序\u AuthenticationRequest
,是打字错误吗?而且,用这种方法重定向似乎不是一个好主意
SingleSignOn
方法的内容是什么?如何创建身份验证cookie?什么时候/在哪里叫它?您使用什么身份验证机制?ASP.NET成员资格?ASP.NET身份?•您如何使
/Home/Index
安全?您是否使用
[Authorize]
属性?Reza,感谢您的回复。目前,单点登录部分在没有我添加的新代码的情况下工作,该代码应该执行Response.Redirect(“~/?someparameter=parameter”,false)。本质上,我上面提到的单点登录方法已经作为安全机制。您是正确的,事件是AuthenticateRequest,但是该方法在Global.asax.cs类中作为Application_AuthenticateRequest实现。SingleSignOn方法的内容是它使用System.Web.Security.FormsAuthentication.GetAuthCookie(customObject,false)创建cookie。然后将cookie添加到Response.Cookies.Add(cookie)中。然后从应用程序_AuthenticationRequest()调用SingleSignOn()方法,如果在SingleSignOn()中验证了用户,则该应用程序将重定向到/Home/索引。为了确保/Home/Index(HomeController.cs)中的安全性,我们使用自定义注释来扩展System.Web.Mvc.AuthorizeAttribute。我使用表单身份验证创建了SSO。在站点中使用相同的域进行身份验证Cookie以及在站点中使用相同的机器密钥是主要的关键点。为了确保一切正常,您应该首先使用标准的
授权
属性,然后应用自定义属性。无论如何,在我的实现中没有任何与
AuthenticateRequest
相关的内容,我使用
Logon
操作进行登录,并在那里执行重定向。
Context.ApplicationInstance.CompleteRequest();