最近使用 .NET Core 遇到的一些坑

摘要:
最近,在。NETCore升级到2.0,它开始制造很多麻烦,但它遇到了很多陷阱,所以我特意记录了它。DEBUG#endif中的代码无法更改配置环境。配置环境总是灰色的,这让我怀疑VS2017 NETCore是否不支持条件编译器?因此,我创建了一个新的控制台程序来测试以下内容,但它仍然工作如下:我可以在这里看到,我不是一个调试环境,但#ifDEBUG颜色仍然正常,!

最近.NET Core升级到2.0后开始慢慢捣鼓的多了起来,但遇到了不少坑,所以特来记录下。

第一个坑  条件编译符

  我们在编写一些方法的时候通常会为Debug模式增加一些输出日志等以便我们检查,也会为Release模式增加或修改一些特定的参数,但今天我在写这些的时候就遇到了这个坑
#if !DEBUG  #endif 中间的代码 不能我怎么更改配置环境 始终是灰色,这让我开始怀疑,难道VS 2017 的.NET Core 不支持条件编译符了? 

于是新建了个控制台程序测试了以下,但又发现还是起作用了的如下:

最近使用 .NET Core 遇到的一些坑第1张

这里就可以 看到 我明明不是Debug环境啊,可是 #if DEBUG的还是正常色,!DEBUG的还是灰色,直接F5运行后 发现结果出乎我意外

最近使用 .NET Core 遇到的一些坑第2张

结果居然是正常的,如何我又怀疑是我vs 更新后出问题了,于是我又用.net framework 旧格式创建一个了一个项目发现旧的又是好的

最近使用 .NET Core 遇到的一些坑第3张

第二个坑  .NET Core MVC下的部分文件无法下载

   使用.NET Core MVC创建了一个站点,本来使用的还蛮好的,但后来配备了app 于是就直接把apk 文件放到 网站的wwwroot目录下了,改了个名字就叫app.apk,然后访问: http://127.0.0.1/app.apk 返回给我一个404 not find 

最近使用 .NET Core 遇到的一些坑第4张

因为搞iis 还是比较多,于是马上想到一个是每天添加 mime导致,于是去iis站点里面增加,发现以及存在了

最近使用 .NET Core 遇到的一些坑第5张

瞬间就懵逼了,于是就从到请求筛选里面去找找是不是在那被禁止了 但发现也没用,于是又把文件改成app.apk.zip试了下,发现zip是可以下载的

最近使用 .NET Core 遇到的一些坑第6张

------------

21号中午更新,

这个问题感谢@蜗牛往前走的指点,所以才记起因为iis只是一个代理了,所以自己捣鼓了一个解决方案,就是在appsettings.json配置里面配置

如下

最近使用 .NET Core 遇到的一些坑第7张

在到设置Startup.cs的添加代码

 public void ConfigureServices(IServiceCollection services)
        {
            services.Configure<Dictionary<string,string>>(Configuration.GetSection("Mime"));
            services.AddMvc();
            services.AddDbContext<ApplicationDataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServerConnection")));
        }
 public void Configure(IApplicationBuilder app, IHostingEnvironment env, IOptions<Dictionary<string, string>> option)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseBrowserLink();
            }
            else
            {
                app.UseExceptionHandler("/Home/Error");
            }
            // app.UseStaticFiles()  //使用新的配置文件方式使用
            var provider = new FileExtensionContentTypeProvider();
            foreach(string key in option.Value.Keys)
            {
                provider.Mappings.Add(key, option.Value[key]);
            }
            app.UseStaticFiles(new StaticFileOptions() { ContentTypeProvider = provider });
            app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
        }

 因为FileExtensionContentTypeProvider默认的构造函数mime基本已经定死了 而。NET core的网站 很多是不采取iis设置的
FileExtensionContentTypeProvider代码地址 大家可以去看看https://github.com/aspnet/StaticFiles/blob/dev/src/Microsoft.AspNetCore.StaticFiles/FileExtensionContentTypeProvider.cs

第三个坑  .NET Core  2.0 MVC 的试图文件

        从2.0开始貌似试图文件被直接打包成了dll文件,不在像传统的mvc一样发布后还是shtml文件,而是被编译成了dll文件 命名规则是 项目名称.PrecompiledViews.dll

最近使用 .NET Core 遇到的一些坑第8张

 第四个坑  .NET Core  引用DLL问题

        我们以前开发总是把一些常用的某些功能性的单独做成一个类库 编译成dll 后供项目使用,但这样做好像在.NET Core的项目中行不通

起初我写了一个公共的类库,在解决方案里面又新增了一个类库,去引用公共类库的项目,这样做的时候并没有什么异常,但当我启动另外一个vs创建一个新的解决方案添加项目在去引用公共类库的dll后 在vs里面写代码都很正常,代码提示也都有

但是一按F5 调试就出来坑了,报未能找到类型或命名空间

最近使用 .NET Core 遇到的一些坑第9张

解决方案是把公共类库打包 生成NuGet包

最近使用 .NET Core 遇到的一些坑第10张

然后通过管理NuGet包添加引用,但很多情况下 一些类库我并不想都放到nuget.org上面,可以把生成的nuget包放置Microsoft Visual Studio Offline Packages 离线包里面

最近使用 .NET Core 遇到的一些坑第11张

最近使用 .NET Core 遇到的一些坑第12张

放到Microsoft Visual Studio Offline Packages对应的目录即可

免责声明:文章转载自《最近使用 .NET Core 遇到的一些坑》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Javascript模块化开发1——package.json详解使用boost线程定时器作为后台线程来切换主循环程序状态方法总结下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

汽车网络处理设计

汽车网络处理设计 适用于中央网关、域控制器、FOTA、安全密钥管理、智能天线和高性能中央计算节点 概述 恩智浦S32G-VNP-RDB2是一款紧凑型、高度优化的集成板,适用于汽车服务型网关(SoG)、域控制应用、高性能处理、功能安全和信息安全应用。 S32G-VNP-RDB2基于4个Arm® Cortex®-A53内核和3个双核锁步Arm Cortex-M...

Loadrunner原理及基准测试

性能测试基本概念 1、并发和在线的区别:并发的压力是一个瞬时压力,一般针对同一类型的业务。在线的压力是一段时间内的压力情况。 2、20用户并发的压力相当于200用户在线的压力。(1:10的比例) 写测试计划时,可以参考,比如2000用户在线,一般是200个用户并发。(并发登录、并发查询、并发删除等) 3、请求响应时间=客户端时间+网络时间+服务器时间 4、...

ubuntu死机怎么办

在使用ubuntu的时候由于各种复杂的因素,如软件不兼容,误操作等问题导致"死机"怎么办呢?下面我们来看看如何解决这问题...   可以打开终端模拟器   1 ctrl+alt+t看看能不能调出 终端模拟窗口 2 进入 终端模拟窗口 可以 $top   (ctrl+c退出top) 查看你最近使用的应用,通过  $sudo kill...

【转载】mac os常用软件

最近准备重新装系统了,,先暂时直接转~等重转好后,再自己整理个列表 小胖的" MacOS常用免费软件 "清单(有小更新). 转眼用MacOS也有一年多了, 当初刚开始使用时, 网上很多类似"我的Mac软件清单" "Mac必备软件" 一类的文章对我帮助很大.最近换了Mac Air ,正好有机会重新整理和审视一下自己机器里安装的软件.在这里 把它们整理出来...

clickhousebackup备份和恢复

版本:1.2.2 1.下载wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/v0.6.0/clickhouse-backup.tar.gzwget https://github.com/AlexAkulov/clickhouse-backup/releases/do...

常用的软件测试方法

随着软件测试技术的不断发展,测试方法也越来越多样化,针对性更强;选择合适的软件测试方法可以让我们事半功倍。以下是一些常用的软件测试方法:   β测试_Beta测试   β测试,英文是Beta testing。又称Beta测试,用户验收测试(UAT)。   β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试...