在.net framework程序中承载asp.net core

2018-01-13 10:54:14来源:http://www.cnblogs.com/TianFang/p/8278121.html作者:博客园_TianFang人点击

分享

Asp.net core在写REST服务上比之前的老版本要方便不少,我已经逐渐将ASP.Net WebAPI的REST服务往Asp .net core上迁移了。然而,在迁移的过程中,还是遇到了一些问题的。


由于Asp.net的架构如下图所示:



它的底层支撑库是.net standard,而.net framework的库和.net standard并不对等:


一些功能库在.net standard中没有(如图像处理等)


一些方法调用要改,迁移的工作量较大


一些依赖的第三方库没有.net standard的版本


一些库无法移植(如使用了Pinvoke等)


对于这些比较难迁移的服务,之前还是将其维持不变,在新服务中通过跳转的方式封装了它们。然而,今天在新建.net core web程序时发现居然还有.Net framework的选项



选中它新建项目试了一下,还真是在.net framework上承载的asp.net core程序。跑起来也没有任何问题,也可以引用其它的.net framework类库。看了一下,和.net core的版本相比,它引用了如下两个.net standard库:



也就是说,微软用.net standard将.net core中相应的库给重写了,asp.net core程序以后也可以在.net framework上快乐的玩耍了。


最后,附一个在使用的过程中遇到的问题:


用Swashbuckle.AspNetCore添加Swagger UI的时候提示出异常: System.MissingMethodException: Method not found: 'Void Microsoft.Net.Http.Headers.EntityTagHeaderValue..ctor(System.String)'.


在Github上找到了有人提交的 Issue ,参考该页面的方法,在Nuget上添加 Microsoft.AspNetCore.StaticFiles 库即可。这个应该是Swashbuckle库的锅,估计后续版本应该会在Nuget上增加该库的依赖。这里记录一下,以备和我遇到同样问题的朋友查询。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台