在iconfont.cn选择图标注意的几个问题, iconfont图标大小

在用iconfont的过程中,经常遇到图标大小显示不一致,实际上是因为在选的时候没有注意到细节,注意到下面的几个细节,就可以图标大小一致,下图为例:

fonicon大小对比

1、用chrome查看,黑色的框内(svg.icon)数值一致,此值显示了原图的比例,如果比例不一致,导致图标大小不一。

2、在淡蓝色的区块中,明显看到钻石的顶部和底部没有抵满,在页面上显示的时候会显示钻石更小,虽然尺寸一样。

3、明显钻石的线条更粗,这样如果背景和字体的颜色反差较大,能明显感觉钻石突兀,所以选的时候尽量选择线条粗细一致的图标。

另外在选择图标的时候尽量选择同样边框的图标,比如一个是圆角一个是直角的图标,这两种图标排列在一起的时候,感觉很不好。

关于HttpContext.SignInAsync无效的问题

asp.net core身份验证中,为了测试用户登陆,直接用代码给赋值

var claims = new[] { new Claim("userId","2") };
var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var authProperties = new AuthenticationProperties
            {
                AllowRefresh = true,
                ExpiresUtc = DateTimeOffset.UtcNow.AddHours(24),//24
            };
_httpContextAccessor.HttpContext.SignInAsync(
                   CookieAuthenticationDefaults.AuthenticationScheme,
                   new ClaimsPrincipal(claimsIdentity),
                   authProperties);

执行完以上代码后紧接着执行

var claims = HttpContext.User.Claims;

发现设置claims 并没有成功,于是断点跟踪到_httpContextAccessor.HttpContext.SignInAsync,确实HttpContext.User.Claims没有值,下载了微软的示例代码,发现必须执行一个完整的页面才可以,也就是说执行完登陆代码之后,在另外的页面获取HttpContext.User.Claims才可以获取到,比如我们设置一个cookies或者session,设置完成之后紧接着代码就可以获取到这个值,但是HttpContext不同,必须完成一个完整的请求之后,才可以获取到新的值,这可能跟HttpContext的机制有关系

asp.net core 微信调试 IIS,微信本地调试

 需求:微信开发需要验证域名,每次与微信的通讯的都是建立在域名之上,所以需要在服务器上开发,但是服务器速度配置没法跟本地环境比,还是弄到本地开发比较舒服。

第一步 映射域名到本地电脑

要做的第一步是让域名可以访问本地,类似花生壳、ngrok、natapp等软件可以把域名映射到外网,但是都有限制,要么死贵,要么域名不固定,如果域名不固定除了每次配置微信开发设置,还要配置本地的vs设置,花点钱省点心吧,我用的是 http://natapp.cn,一个月9块钱,购买的时候输入 优惠码 可以9折优惠 :D91C1DAA

此时注意几个问题:因为natapp的隧道是用阿里云的服务器,所以用自己的域名需要备案,否则域名无法访问。

1、如果想用自己的域名,而且已经备案,选择其中套餐即可。
2、如果想用自己的域名,但是未备案,选择HK套餐(香港)。
3、如果用natapp提供的二级域名,在购买的时候选择 不需要二级域名,在后台的隧道配置中,在去申请一个natapp已经备案的二级域名,3元/年。
根据教程配置好,用域名访问到本地IIS即可完成此步骤。

第二步 配置IIS

1、主目录设置:指向开发目录而不用指向发布目录

2、应用程序池选择,无托管代码

第三步 设置VS

此时点击调试或者在浏览器中打开,浏览器url显示域名,网站正常打开。

第四步 排错

我的数据库也在本地,appsettings.json里之前设置的连接字符串无法登陆,提示SQL登陆错误,改两处设置正常,反正是调试环境,正常就可以。

http://www.fanxiaodong.com/2019/01/10/asp-net-core-iis-apppoll-%E7%99%BB%E9%99%86%E5%A4%B1%E8%B4%A5%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88/

总结:

1、这样设置了之后,调试的时候断点也可以进来,也方便调试,特别是发送和接收微信消息的时候比较方便。

2、代码改完之后,浏览即可出效果,不用发布。

 


asp.net mvc 获取同name input情况

<input name="a" value="1"/>
<input name="a" value="2"/>
<input name="a" value="3"/>
<input name="a" value="b"/>最后一个为字符

 获取方式:

1、Request.From[“a”] 结果为字符串”1,2,3,b”

2、使用参数获取,如:add(string a),结果为1

3、使用数组参数获取,如add(string [] a),结果为数组1,2,3,4,使用add(int[] a )结果为int数组1,2,3   b被忽略掉

AutoMapper 转换时处理字段 asp.net core

public class AutoMapperConfig : Profile
    {
        public AutoMapperConfig()
        {
            CreateMap<Models.Goods, Models.V_Goods>().ForMember(
                x => x.AddTime,
                opt => opt.MapFrom(src => ((DateTime)src.AddTime).ToString("yyyy-MM-dd HH:mm:ss")));
        }
    }

Models.Goods转化为Models.V_Goods时,将Goods.AddTime转换为格式化后的字符串

asp.net core mvc 404错误

遇到这个错误,一定不要慌,第一、看下路由是否正确,如果刚刚还能打开,并且没有改动路由信息,现在就404那就不是路由的问题。第二、如果确认路由没动,这时候最恶心了,一定要看下依赖注入是不是没有注册?在 Startup.cs文件中,public void ConfigureServices(IServiceCollection services){},浏览器怎么都是404,调试vs不报错,不报错…耽误我几个小时…,第三看有没有写错,如果 写成了 private readonly Logger _logger ;而不是private readonly ILogger _logger ;也会一样的404报错,vs不报错,所以一定要注意,传入的必须是Interface,写错一个字母就404了