平常使用Visual Studio开发.NET项目,总会有用到一些自定义静态资源文件的时候,由于VS默认情况下,项目编译和生成后不会把静态资源文件复制到输出目录,就需要我们自己手动设置静态文件的属性。操作十分简单,本文作为一个知识小结笔记进行记录。
在使用Visual Studio 2017时遇到项目生成失败的问题,出现错误:签名时出错: 未能对 bin\Debug\app.publish[项目名称].exe 签名。SignTool Error: No certificates were found that met all the given criteria.
在ASP.NET当中,如果遇到用户已经登录,但是获取不到用户名(User.Identity.Name=""
),并且User.Identity.IsAuthenticated
的值依然为false
的情况,或者调用FormsAuthentication.SignOut()
方法注销用户账户,但是获取User.Identity.IsAuthenticated
后得到的值还是为true
。只要是遇到类似这两种无法实时获取用户身份信息的情况,就要注意当前用户的身份信息是否还没有进行创建/更新,是否没有进行重定向重新触发身份验证事件?这个问题主要和ASP.NET的身份验证机制有关!
在鼓捣一个项目的时候引发了HttpAntiForgeryException (0x80004005)异常,并提示:提供的防伪标记适用于用户“admin”,但当前用户为“”。从异常信息可以很直观看出问题产生的原因所在,主要在于身份认证和授权的状态发生改变,导致防伪令牌没有更新正确的身份信息从而验证失败。
上篇文章主要是从源码入手,解析并了解AntiForgeryToken
防伪标记的生成过程。这篇文章还是会结合源码,对ValidateAntiForgeryToken
属性的验证逻辑进行分析和说明,搞懂防伪标记的验证逻辑到底是怎么一回事,也能对ASP.NET MVCV的防伪标记有着更加深入的理解。
之前开发某个ASP.NET MVC项目的时候遇到了一个和防伪标记有关的问题,结果不知不觉深入到了源码的研究。本篇主要从AntiForgeryToken
(防伪标记/令牌)的生成过程入手,搭配mono的ASP.NET源码进行分析。
其实MvcHtmlString
这个类在ASP.NET MVC中是经常出现的,只要是使用HtmlHelper
帮助器生成的HTML控件,最终返回的值都是一个MvcHtmlString
对象。例如在使用Razor模板引擎的视图中,使用诸如@Html.TextBox
、@Html.CheckBox
、@Html.Editor
、@Html.Hidden
这类方法生成的input元素,只要在VS中按F12查看方法定义都可以看到返回值类型是MvcHtmlString
。
在ASP.NET MVC中是可以通过代码手动控制防伪标识(AntiForgeryToken)的更新。另外在介绍更新令牌的具体方法前,会先说明如何获取防伪令牌,毕竟要以此为基础才能实现。
这还是我第一次遇到这个错误,以前都没太注意配置文件中元素的放置顺序。这次在调试一个ASP.NET MVC项目的时候,突然就爆出HTTP Error 500.19错误,提示无法访问请求的页面,因为该页的相关配置数据无效。
在开发某个.NET项目的过程中,遇到了UTF-8编码的特殊字符在插入到GBK编码的MySql数据库时,引发了这样的错误:ERROR 1366: Incorrect string value: '\xE2\x80\xA2\xE7\x8A\xB6...' for column 'title' at row 2。
如果某天发现网站的URL突然多了个小尾巴:AspxAutoDetectCookieSupport=1,那么肯定是设置了配置文件中sessionState元素的cookieless特性,并且将它的值为"AutoDetect"。
去年很早的时候写过几篇关于ASP.NET MVC异常处理的方法和总结,后面遇到有网友留言,感觉在看过文章后虽然知道了多种全局异常处理的方案,但是在如何选择上出现了困惑,这里我就根据自己的一些项目经验来分析和说明下。