问题:在MVC的过滤器中验证用户状态时报如下错误:
 
无法在发送 HTTP 标头之后进行重定向。 跟踪信息:   在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent)
   在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult)
 
解决:
在验证用户身份的时候首先要到第三方获取用户的openid,这时需要跳转到第三方页面,然后回到到当前页面链接,如果没有绑定则再次跳转到登录页面。过滤器代码如下:
 
  1. public class Logged : ActionFilterAttribute, IAuthorizationFilter
  2. {
  3. ………略………
  4. public void OnAuthorization(AuthorizationContext filterContext)
  5. {
  6. string openid = XXXXXX.GetOpenId();//在获取openid时XXXXXX.GetOpenId()已经跳转,代码略
  7.  
  8. if (string.IsNullOrEmpty(openid))
  9. {
  10. filterContext.Result = new RedirectResult("https://www.****.com/login");//在获取openid时页面已经跳转,这里就不要再次跳转了,否则报错:无法在发送 HTTP 标头之后进行重定向。
  11. return;
  12. }
  13. ………略………
  14. }
  15. ………略………
  16. }

修改后的代码:

  1. public class Logged : ActionFilterAttribute, IAuthorizationFilter
  2. {
  3. ………略………
  4. public void OnAuthorization(AuthorizationContext filterContext)
  5. {
  6. string openid = XXXXXX.GetOpenId();//在获取openid时XXXXXX.GetOpenId()已经跳转
  7.  
  8. if (string.IsNullOrEmpty(openid))
  9. {
  10. filterContext.Result = new ContentResult();//终止Action继续向下执行
  11. return;
  12. }
  13. ………略………
  14. }
  15. ………略………
  16. }
 
 
 
 
 

解决:无法在发送 HTTP 标头之后进行重定向。 跟踪信息: 在 System.Web.HttpResponse.Redirect(String url, Boolean endResponse, Boolean permanent) 在 System.Web.Mvc.Async.AsyncControllerActionInvoker.<>……的更多相关文章

  1. Response.Redirect引起的“无法在发送HTTP标头之后进行重定向”

    博客后台切换至i.cnblogs.com之后,在日志中发现大量的“无法在发送HTTP标头之后进行重定向”(Cannot redirect after HTTP headers have been se ...

  2. 出现“无法在发送 HTTP 标头之后进行重定向”问题

    如题,在Response.Redirect之后会偶尔出现“无法在发送HTTP标头之后进行重定向”问题. 是因为,已经在出现错误的代码之前进行过一次重定向了.仔细检查代码即可. 解决方法:按照逻辑移除多 ...

  3. 处理 ASP.NET 中的异常:无法在发送 HTTP 标头之后进行重定向。

    因为在 Global.asax 中的 Application_Error 事件中添加了统一的错误处理,其中会有 Redirect 重定向到错误页面. 但是有可能有些情况下已经进行过其它重定向操作,所以 ...

  4. C# 无法在发送 HTTP 标头之后进行重定向

    在调试中发现错误如下: Response.Redirect引起的“无法在发送HTTP标头之后进行重定向” 跳转失败 解决方案如下: 使用js方法来跳转地址 const string url=" ...

  5. Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向”

    Page.Response.Buffer与Response.Redirect一起用报错“无法在发送 HTTP 标头之后进行重定向” 原因还未知..

  6. Response.Redirect:无法在发送 HTTP 标头之后进行重定向

    URL:http://blog.163.com/asp_neter/blog/static/17510918820107258107558/ 错误出现语句:“Response.Redirect(&qu ...

  7. MVC开发中的常见错误-06-"无法在发送 HTTP 标头之后进行重定向。"

    通过监视可以看到: 原来是跳转到登录页面后,登录页面中又发送了一个GeMneuItems的请求,用于加载页面图片

  8. 无法在发送 HTTP 标头之后进行重定向

    public ActionResult Index2() { Response.Buffer = true; Response.Clear(); return Redirect("/Wech ...

  9. 关于MVC中 服务器无法在发送 HTTP 标头之后修改 cookie此类问题的解决

    处理方法 使用过滤器控制权限时,若无权则跳转到无权页面,但是每次跳转都会出现 ERROR - System.Web.HttpException (0x80004005): 服务器无法在已发送 HTTP ...

随机推荐

  1. 两个关于URL解析的例子

    例一: /* 解析URL查寻串中的name=value参数对 将name=value对存储在对象属性中,并返回对象 alert(getQuery().name) */ function getQuer ...

  2. The maximum column size is 767 bytes (Mysql)

     ERROR app.wsutils 419 INCRON: Error: ('HY000', '[HY000] [MySQL][ODBC 5.2(w) Driver][mysqld-5.7.7-rc ...

  3. urllib.parse.urldefrag(url)的解释

    引自https://www.cnblogs.com/ublue/articles/4471210.html 1.URL hash(片段标识符) 任一带#的URL称为片段URL(通常称为URL hash ...

  4. Hive—简单窗口分析函数

    hive 窗口分析函数 : jdbc:hive2:> select * from t_access; +----------------+---------------------------- ...

  5. moco操作

      1.启动 单个文件启动:将jar包跟启动的文件放在一个文件夹下 命令:java -jar moco-runner-<version>-standalone.jar http -p 12 ...

  6. AnimatorOverrideController

    [AnimatorOverrideController] 有N个角色,这N个角色的状态机一样,只是动画不一样.这时候,新建一个AnimatorController,设置状态机.然后为这N个角色建立N个 ...

  7. Access to the path 'C:\inetpub\wwwroot\mysite\images\savehere' is denied.

    访问路径被拒绝 我解决了这个设置: IIS>应用程序池> [您的站点]>高级设置...>标识>内置帐户> LocalSystem

  8. 孤岛营救问题(BFS+状压DP)

    孤岛营救问题 https://www.luogu.org/problemnew/show/P4011 用状压DP标记拿到钥匙的数量 #include<iostream> #include& ...

  9. 识别名人 · Find the Celebrity

    [抄题]: 假设你和 n 个人在一个聚会中(标记为 0 到 n - 1),其中可能存在一个名人.名人的定义是所有其他 n - 1 人都认识他/她,但他/她不知道任何一个.现在你想要找出这个名人是谁或者 ...

  10. C++ 输入cin 和输出cout

    C++输入cout与输出cin 输入和输出并不是C++语言中的正式组成成分.C和C++本身都没有为输入和输出提供专门的语句结构.输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的. ...