【知识笔记】Debugging
一、启动调试出现 无法启动程序 当前状态中是非法
VS工具--选项--调试--常规--启用asp.net的JavaScript调试(chrome和ie)去掉勾选
二、web.config中<customErrors>报错
<customErrors>节点用于定义一些自定义错误信息的信息。
此节点有Mode和defaultRedirect两个属性,其中
defaultRedirect属性是一个可选属性,表示应用程序发生错误时重定向到的默认URL,如果没有指定该属性则显示一般性错误;
Mode属性是一个必选属性,它有三个可能值,它们所代表的意义分别如下:
Mode 说明
On 表示在本地和远程用户都会看到自定义错误信息。
Off 禁用自定义错误信息,本地和远程用户都会看到详细的错误信息。
RemoteOnly 表示本地用户将看到详细错误信息,而远程用户将会看到自定义错误信息。
这里有必要说明一下本地用户和远程用户的概念。当我们访问asp.net应用程时所使用的机器和发布asp.net应用程序所使用的机器为同一台机器时成为本地用户,反之则称之为远程用户。
在开发调试阶段为了便于查找错误Mode属性建议设置为Off,而在部署阶段应将Mode属性设置为On或者RemoteOnly,以避免这些详细的错误信息暴露了程序代码细节从而引来黑客的入侵。
所以想看具体的错误,有两种方式:将mode设置为Off,或者直接在服务器上复现刚才发生错误的操作,看详细的错误信息。
参考:关于web.config中<customErrors>节点说明
三、WCF报错
1、WCF运行不起来
System.ServiceModel.EndpointNotFoundException:“没有终结点在侦听可以接受消息的
"ExceptionMessage": "没有终结点在侦听可以接受消息的 http://localhost.dev.xxx.com/Services/yyyService.svc。这通常是由于不正确的地址或者 SOAP 操作导致的。如果存在此情况,请参见 InnerException 以了解详细信息。","ExceptionType": "System.ServiceModel.EndpointNotFoundException",
可能是 wcf服务没启动?
从IIS_Express中打开wcf站点,看是否有报错,
可能错误:未能加载配置文件;web.Config中wcf路径配置有误
路径错误,看是否需要修改.vs\config\applicationhost.config 中的虚拟路径 <virtualDirectory path="/Service" physicalPath="D:\sources.git\xxx\yyy" />
配置文件拷贝后,WCF运行起来。
2、调试不进断点
调试选项里面的 “仅我的代码”,取消选中
3、无法自动进入并单步执行服务器。调试器未能在服务器进程中停止
以上设置都配置好后,清理解决方案,重新生成。
4、域名绑定问题
可以看到,restapi请求WCF时 没有成功。
在本地看到wcf是ok的。但是在restapi所在的服务器上请求wcf是不行的。于是看服务器上的host,发现没有绑定 wcf域名对应的ip。
四、DBContext报类型初始值设定项引发异常
查看配置文件,configSource节点
<appSettings configSource="VConfigs\Dev\appSettings.config">
<add key="ClientSettingsProvider.ServiceUri" value=""/>
</appSettings>
手动改为
<appSettings configSource="VConfigs\Dev\appSettings.config"/>
参考:http://www.it1352.com/21840.html
五、 Missing type map configuration or unsupported mapping
Missing type map configuration or unsupported mapping. Mapping types: Discount -> DiscountEntity Ferry.Data.Models.Discount ->Entity.DiscountEntity Destination path: List`1[0] Source value: Data.Models.Discount,錯誤源:
参考:http://www.cnblogs.com/dudu/p/5875579.html
从 GitHub 上签出 AutoMapper 的源代码一看 Mapper.Initialize() 的实现,恍然大悟。
public static void Initialize(Action<IMapperConfigurationExpression> config)
{
Configuration = new MapperConfiguration(config);
Instance = new Mapper(Configuration);
}
原来每次调用 Mapper.Initialize() 都会创建新的 Mapper 实例,也就是多次调用 Mapper.Initialize() 只有最后一次生效。
更多参考:【.NET】AutoMapper学习记录
六、the current .NET SDK does not support targeting .NET Standard 2.0. Either target .NET Standard 1.6 or lower, or use a version of the .NET SDK that supports .NET Standard 2.0
通过这句英文一直以为是 .net framework 2.0未安装。
安装以后引用不报错(没有黄色感叹号),编译的时候却还是报错。
找到原因,原文地址
https://stackoverflow.com/questions/45732236/the-current-net-sdk-does-not-support-targeting-net-standard-2-0-error-in-visua
安装 .net core 2.0可以解决。
vs重启后,出错的项目 属性。重新选择目标平台。
七、未能找到文件
“D:\sources.git\wingontravel_SZ\Ferry\DEV\Ferry\Ferry.Offline\App_Data\XmlDocument.xml”
重新编译offline项目,并且index.html为启动页面。。
让D:\sources.git\wingontravel_SZ\Ferry\DEV\Ferry\Ferry.Offline\App_Data 目录下生成这个xml文件,或者拷贝过来。
八、初始化异常或内存不足
System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
日志记录的详细信息:
System.TypeInitializationException: The type initializer for 'Ferry.Data.Models.FerryDBContext' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Data.Entity.Utilities.TypeExtensions' threw an exception.
---> System.TypeInitializationException: The type initializer for 'System.Data.Entity.Core.Metadata.Edm.MetadataItem' threw an exception.
---> System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was thrown.
咋一看是数据库(或者EF连接)初始化的问题。
若期间没有动过服务器或者DB,,则大致可以认为是服务器问题,可以重启服务,只重启出问题的应用程序池。
九、https网站中样式资源没起作用
F12 看到js报错:Mixed Content: The page at 'https://xxx.com//app/#booking/search'
was loaded over HTTPS, but requested an insecure stylesheet 'http://xxx.com/Site/Styles/offline/main.css'.
This request has been blocked; the content must be served over HTTPS.
http://xxx.com/Site/Styles/offline/main.css这个资源(位于index.html中的<head>标签中)被阻塞了,
原因:在https网站中,载入http网站的资源(网页、图片等),会被浏览器阻拦。HTTPS 是 HTTP over Secure Socket Layer,以安全为目标的 HTTP 通道,在 HTTPS 承载的页面上不允许出现 http 请求。
正确应该是https://xxxx.com/Site/Styles/offline/main.css
十、未能加载文件或程序集
打开WCF时:未能加载文件或程序集“MongoDB.Bson, Version=2.2.3.3, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。
找到相应的目录:D:\sources.git\xxx\DEV\yyy.Offline.Service.Site\bin
看它里面是否有MongoDB.Bson程序集,没有的话copy一份进去。
十一、分析器错误信息: 未能加载类型“xxxx.Global”
解决方法: 删除此项目下bin里面的所有dll,清理 重新生成。
十二、VS中修改代码,再断点调试,发现命中的还是修改前的代码
解决方法: 清理解决方案,再重新生成。
十三、LINQ to Entities 不识别方法“System.DateTime ToDateTime(System.String)”,因此该方法无法转换为存储表达式
因为LINQ语句最后都是要转为sql语句来执行的,当它转换后,发现sql语句中要执行的方法“XX”,并不是一个在数据库中的存储过程函数,也无法进行转换为存储表达式。
即EF不支持复杂类型(如实体)的直接检索,只能用简单类型(string、int、guid等)
类似异常:LINQ to Entity 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式
最近在项目中遇到需求说,要模糊查询。于是有
var query = store.Repository.Set<EFHotelOrder>().Where(p => p.OrderType == (byte)OrderType.Expert); if (request != null) { if (request.OrderID != null) { query = query.Where(i => i.OrderID.ToString().Contains(request.OrderID.ToString())); } if (request.CityName != null) { query = query.Where(i => i.CityName.Contains(request.CityName)); }
View Code
由于orderId被设计为了int型,故用了toString()。所以报了上面的错误。
参考:LINQ to Entities 不识别方法“System.String ToXX()”,因此该方法无法转换为存储表达式
LINQ to Entity 不识别方法“System.String ToString()”,因此该方法无法转换为存储表达式
而此处遇到的是int型的模糊匹配问题,不适用,后来在网上发现:EF中 int没有模糊查询的概念;一般模糊查询都是针对字符串。
十四、你的xxx.mdf 的版本为 782,无法打开,此服务器支持 655 版及更低版本,不支持降级路径
现象:在vs2015中直接添加数据库和表,
查找资料:782是sql server 2014的内部版本号(是vs2015自带的)、655是sql server2008(本机安装的数据库版本)
原因:你的mdf数据库文件是12.00.2000版本,而你的SQLEXPRESS却是2008
(SQL Server Express 是由Microsoft所开发的SQL Server的其中一个版本,SQL Server Express 有 2005 、 2008 与 2008 R2 、2012 R0和最新的 2014五个版本)
查看数据库的版本,SSMS版本
你调用的数据库文件版本太高,当前的数据库不支持,你只能将调用的数据库版本降低
解决:在本机只安装了sql server2008的情况下,数据库也要用管理工具创建的数据库,不能用vs2015上直接创建的。
十五、基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系
当我们有时用代码编写post/Get请求url远程地址会报“基础连接已经关闭: 未能为 SSL/TLS 安全通道建立信任关系。 ---> System.Security.Authentication.AuthenticationException: 根据验证过程,远程证书无效。
”这个异常,是因为远程url使用的域名 没有购买证书,所以用以下方式来解决:
在create url之前 设定“获取或设置用于验证服务器证书的回调”永远为true 即可,具体如下
请求一定需要:
ServicePointManager.ServerCertificateValidationCallback += RemoteCertificateValidate; System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);private static bool RemoteCertificateValidate(object sender, X509Certificate cert,X509Chain chain, SslPolicyErrors error){//为了通过证书验证,总是返回truereturn true;}
或者
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Ssl3;ServicePointManager.ServerCertificateValidationCallback += (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true;
十六、Unable to cast object of type 'Newtonsoft.Json.Linq.JArray' to type 'System.Collections.Generic.List
无法将Newtonsoft.Json.Linq.JArray隐式转换为List<T>
现在webapi一般使用json,
eg: data (Array[CollectionListItemExtend], optional): 返回data。。类型为JArry,那直接用List<>去接收,就会报上面的错误。
在后台接口获取参数时,我们可以使用dynamic,如:
dynamic jArray = HttpHelper<string, RestAPIGetAccount<object>>.GetDataBy=API(url).Result;//JArray jArray = new JArray();//jArray.ToObject()if (jArray != null && jArray.head != null && jArray.head.code == 0){List<AccAPI.CollectionListItemExtend> temp = jArray.data.ToObject(typeof(List<AccAPI.CollectionListItem>));if (temp != null && temp.Count > 0){string str = temp.ToJSON();System.Console.ReadLine();}}public static async Task<RestAPIGetAccount<object>> GetDataBy(string url){ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Ssl3;ServicePointManager.ServerCertificateValidationCallback += (object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors errors) => true;var rs = new RestAPIGetAccount<object>() { head = new Entity.API.OfflineResponseHeader() };using (HttpClient client = GetHttpClient(url, 100)){try{var httpResponseMessage = client.GetAsync(url).Result;if (!httpResponseMessage.IsSuccessStatusCode){var xmlResult = httpResponseMessage.Content.ReadAsStringAsync().Result;rs.head.code = 500;rs.head.message = "http请求失败";}else{var result = httpResponseMessage.Content.ReadAsStringAsync().Result;if (!string.IsNullOrWhiteSpace(result)){rs = result.FromJSON<RestAPIGetAccount<object>>();}}}catch (AggregateException ae){var exceptions = ae.InnerExceptions.ToList();rs.head.message = string.Join(",", exceptions.Select(p => p.ToString()).ToArray());rs.head.code = 500;HotelHelper.WriteErrorLog(LogSourceType.Common, $"Get数据", $"url:{url}{Environment.NewLine}rs:{rs.ToJSON()}{Environment.NewLine}message:{ae.ToString()}");}catch (Exception ex){rs.head.message = ex.ToString();rs.head.code = 500;HotelHelper.WriteErrorLog(LogSourceType.Common, $"Get数据", $"url:{url}{Environment.NewLine}rs:{rs.ToJSON()}{Environment.NewLine}message:{ex.ToString()}");}}return rs;}public class RestAPIGetAccount<T>{/// <summary>/// 返回data/// </summary>public T data { get; set; }/// <summary>/// /// </summary>public OfflineResponseHeader head { get; set; }}public class OfflineResponseHeader{/// <summary>/// 0-success, (客户端错误400-499) 401未登录, 403没访问权限, (异常500-599) 500-error, /// </summary>public int code { get; set; }/// <summary>/// 錯誤信息/// </summary>public string message { get; set; }}
View Code
其实是 Newtonsoft.Json.Linq.JArry.ToObject()
更多参考:Newtonsoft.Json.Linq.JArray转换为List Convert JSON to a Type
十七、CS0656 C# 缺少编译器要求的成员“Microsoft.CSharp.RuntimeBinder.Binder.Convert”
在使用 dynamic 时生成失败,遇到这样一个错。
解决方法:在项目中添加对 "Micorsoft.CSharp.dll" 的引用
十八、 SqlDateTime 溢出,必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
原因:.NET中 DateTime最小值为: 0001-1-1 0:00:00
数据库中DateTime最小值为: 1753-1-1 0:00:00,
很明显:.NET中的最小值超出了数据库时间类型的最小值,导致数据溢出的错误。(两者的最大值都是一样滴)
出现这种问题多半是因为插入或者更新数据库时,datetime字段值为空默认插入0001年01月01日造成datetime类型溢出。
传给数据库表的时间类型值是null值。这里的null指的是程序代码中的null,多数出现这种情况的场景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库,这时这个变量的值默认是赋成了01年01月01日;由于数据库中DateTime类型字段,最小值是1/1/1753 12:00:00,而.NET Framework中,DateTime类型,最小值是1/1/0001 0:00:00,显然,超出了sql的值的最小值范围,导致数据溢出错误。
解决方法:
方法1、使用System.Data.SqlTypes.SqlDateTime.MinValue替代System.DateTime类型,这样SqlDateTime的MinValue和Sql中DateTime的范围吻合,就不会再出现以上的错误了。
方法2、DateTime为空或最小时,给其赋一个SqlDateTime最小值或者特定值
if (modelberthStatus.TIMEIN == null || modelberthStatus.TIMEIN == DateTime.MinValue){modelberthStatus.TIMEIN = SqlDateTime.MinValue.Value;} //或者: modelberthStatus.TIMEIN = new DateTime(1900,1,1);
转载于:https://www.cnblogs.com/peterYong/p/10647999.html
【知识笔记】Debugging相关推荐
- access2013数据库实验笔记_医学科研实验基础知识笔记(十):甲基化
往期回顾 医学科研实验基础知识笔记(一):细胞增殖 医学科研实验基础知识笔记(二):细胞凋亡检测 医学科研实验基础知识笔记(三):细胞周期检测 医学科研实验基础知识笔记(四):细胞自噬研究策略 医学科 ...
- 数据库系统故障相关知识笔记
数据库系统中可能发生的故障主要包括事务故障.系统故障.介质故障.计算机病毒等.下面给大家简单整理一下相关的故障知识笔记. 1.事务故障 事务故障是因为程序执行错误而引起的非预期.异常终止的故障.主要有 ...
- 汇编程序基本原理知识笔记
1.汇编语言的概念 定义:为特定计算机或计算机系统设计的面向机器的符号化程序设计语言.汇编程序也就是用汇编语言编写的程序.计算机要运行汇编程序需要用专门的翻译程序进行翻译,然后计算机才可以识别. 汇编 ...
- Elasticsearch集群知识笔记
Elasticsearch集群知识笔记 Elasticsearch内部提供了一个rest接口用于查看集群内部的健康状况: curl -XGET http://localhost:9200/_clust ...
- Java基础知识笔记-11_2-Swing用户界面组件
Java基础知识笔记-11_2-Swing用户界面组件 这章教程两个版本,一个语法是非lambda表达式版本,另一个是lambda表达式版本 非lambda表达式版本 1 Java Swing概述 J ...
- 机器学习入门:准备知识笔记(pandas)之一
参考教学笔记:2021年Python人工智能,13天机器学习入门到精通,精讲+14大案例分析(数据来源参考) pandas的优势 增强图表可读性 便捷的数据处理能力 读取文件方便 封装了Matplo ...
- 6-DoF问题相关基础知识笔记
6-DoF问题相关基础知识笔记 一.什么是6-DoF,即6个自由度是什么? 二.PnP算法 三.BOP挑战与官方数据集简介 BOP数据集 BOP toolkit BOP挑战的介绍页面 四.相关论文 C ...
- 二代测序之SNV基础知识笔记总结
二代测序之SNV基础知识笔记总结 文章目录 二代测序之SNV基础知识笔记总结 SNV基础知识 SNVs Mutation vs. Variant[变异和突变] 不同层次的突变 DNA: 1.编码DNA ...
- 推荐两个本地知识笔记软件
由于工作中经常要记录知识或者经验,所以对知识笔记软件比较依赖. 公司要求使用的软件都是正版的.合规的.经过试用,觉得以下两个笔记本软件比较好用. eDiary eDiary是国内开发者开发的,免费可用 ...
- b站唐老师人工智能基础知识笔记
b站唐老师人工智能基础知识笔记 0.机器学习(常用科学计算库的使用)基础定位.目标定位 1.机器学习概述 1.1.人工智能概述 1.2.人工智能发展历程 1.3.人工智能主要分支 1.4.机器学习工作 ...
最新文章
- JS中NaN、NULL、undefined、详解
- java 项目初始化一个定时任务_elastic-job 分布式定时任务框架 在 SpringBoot 中如何使用(一)初始化任务并定时执行...
- c++ :: 用法一
- 【路由交换实验】生成树STP(stp,rstp,mstp)
- mediastream2使用指南(转载)
- vue-resource ajax跨域,基于Vue-resource jsonp跨域问题的解决方法_婳祎_前端开发者
- arcobjects java开发_ArcGIS Engine SDK for Java 最小示例学习
- CSDN markdown 数学公式指导手册
- Longstick的学习周记——第二周
- 联想笔记本无法开启无线网卡的方法
- QComboBox选项置灰、不可选择、文本颜色(汉字颜色)
- 搞编程选什么方向好?前端还是后端?阿里程序员和你聊聊就业心得
- 利用Java计算一光年的距离
- 学习java的第17天
- 智慧灯杆迈向标准化,5G智能灯杆网关加速“数字覆城”
- 剑魂之刃服务器维护,剑魂之刃全服合服停机维护预告
- WPF 使用 Composition API 做高性能渲染
- 77%的本科毕业生起薪超过1万元,程序员的薪资到底有多高?
- U3D实现WebCamera显示
- 程序员修炼之路:算法的力量
热门文章
- 2022-2028年中国SPA水疗行业市场深度分析及投资前景展望报告
- 北京强化养老行业诚信自律 从业者禁止侮辱、虐待老人
- 丧心病狂的Android混淆文件生成器
- 计算机网络验证性实验-棋歌教学网
- python3日期时间运算_马克的Python学习笔记#数字,日期和时间3
- 航空货运物流的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 小韦系统装工行网银U盾驱动的方法
- 计算机专业如何推广太极拳,太极拳在年轻人群体中推广的怎么样不得不说挺吃惊...
- java中台阶问题_编程:跳台阶问题
- 倾斜摄影文件和BIM文件加入iServer