[聚合文章] 在.net framework程序中承载asp.net core

.Net 2018-01-12 12 阅读

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上增加该库的依赖。这里记录一下,以备和我遇到同样问题的朋友查询。

注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。