webapi 直接输出图片

HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new ByteArrayContent(ms.ToArray());
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
return result ; 

网上的代码基本上都是这样的 但是api的请求结果是Json

{"Version":{"Major":1,"Minor":1,"Build":-1,"Revision":-1,"MajorRevision":-1,"MinorRevision":-1},"Content":{"Headers":[{"Key":"Content-Type","Value":["image/jpg"]}]},"StatusCode":200,"ReasonPhrase":"OK","Headers":[],"RequestMessage":null,"IsSuccessStatusCode":true}

最终结果,输入图片 使用IAcitonResult ,返回子类FileContentResult,直接输出图片

public IActionResult GetQr(string str)
{
    var img = LIB.QR.GetQrCode(str);
    MemoryStream ms = new MemoryStream();
    img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
    return new FileContentResult(ms.ToArray(), "image/png");
}

关于导航属性的几点

var context = _context.Feedback.OrderByDescending(a=>a.AddTime);
[NotMapped]
Public User User{get;set;}

此时,_context.Feedback.Include(“User”),无法获取User

如果不加[NotMapped],以上代码获取到不为null的User,比如UserId=0,此时整条记录将不再显示。

asp.net core

Asp.Net Core Web API 参数

[HttpPost]
public IActionResult Post(string a,string b)
{}

此种方式只能在URL后面加?a=1&b=2的时候才能收到参数,否则无论使用form-data x-www-form-urlencoded,Json,全部为null

[HttpPost]
public IActionResult Post(dynamic d)
public IActionResult Post(object d)
public IActionResult Post(model d)

上面情况:
1、使用data: { “a”: “1”, “b”: “2” }, contentType
application/x-www-form-urlencode 报错:415 Unsupported Media Type

2、使用 data: { “a”: “1”, “b”: “2” } ,contentType:”application/json”,报错
400 Bad Request

3、 使用 data: JSON.stringify({ “a”: “1”, “b”: “2” }),contentType:”
application/x-www-form-urlencode “,报错
报错:415 Unsupported Media Type

4、 使用 data: JSON.stringify({ “a”: “1”, “b”: “2” }),
contentType:”application/json” ,可以收到参数

综上:
1、Post只能接受一个对象,如果非要写public IActionResult Post(string a),那么传值data: { “”: “Jim” },a的值就是jim
2、多个参数组合成dynamic,object,后台反序列化,前台使用
JSON.stringify
3、多个参数组合成实体,后台直接调用。
4、Get请求直接可以用string a,string b接收的到。
5、Post必须使用contentType:”application/json”方式传递
6、POST方式只能传递一个实体,如model,object,dynamic
7、前台JSON.stringify,后台接受数据使用[FromBody]

asp.net core mvc ActionFilter 不继续执行下面的代码

在mvc的过滤器里面,执行相关的控制器之前,会先执行ActionFilter里面的代码,比如登陆时候,在执行admin/list的时候 先执行actionfilter里的代码,若果需要跳转,可以写成

context.HttpContext.Response.Redirect("/admin/login")

但是这样的问题,在于此时跳转后,会继续执行admin/list的代码,这是我们不希望的,改成

context.Result = new Microsoft.AspNetCore.Mvc.RedirectResult("/admin/login/");

这样程序将直接跳转,不会执行下面的请求

asp.net core iis apppoll 登陆失败解决方案

之前asp.net的时候都没有出过问题,用了asp.net core之后配置数据库连接总是有问题,总结了一下:

1、网站应用程序池选择Local System 。

2、数据库登录用户设置映射 public和db_owner

3、此时在通常情况下都没有问题,但是asp.net core出问题,最重要的一点,用数据库管理员登陆,查看登录名NT AUTHORITY\SYSTEM的权限,用户映射要给当前数据库 的public和db_owner ,这样才可以

总结:如果应用程序池选择NetWorkService,那么设置数据库中的NT AUTHORITY\NETWORK SERVICE的权限,如果没有这个用户,添加即可

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

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

fonicon大小对比

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

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

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

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