异常处理(未分类)

此文章为学习工作中需要的处理问题/异常的经验的整理,本文未进行异常分类,随着异常项的增多,会逐渐开始分类整理。

编译器失败,错误代码为 -2146232576:

  去除config文件中的<system.codedom>节点

webservice相关异常:

  1.【检测到有潜在危险的 Request.Form 值】访问参数中带有xml内容或者特殊字符时,页面会报Requet.Form类似的提示:

<system.web>
  <
httpRuntime requestValidationMode="2.0"/>
<
/system.web>

  2.通过第三方的WebService进行访问时,出参内容比较多时,会被拒绝:

    提示:System.ServiceModel.CommunicationException:已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。

<basicHttpBinding>
        <binding name="********Soap" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" />
</basicHttpBinding>

  3.通过外网访问webservice时,发现本来可以进行输入的测试窗口不见了,只剩下一行提示(具体提示忘了):

<system.web>
    <webServices>
        <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="Documentation"/>
         </protocols>
    </webServices>
</system.web>

数据处理相关异常:

  1.参数化查询 '(@Name n' 需要参数 '@Name',但未提供该参数。 

     cmd.Parameters.AddWithValue("@Name", null); 

    该异常是在进行插入或者更新的时的字段为null,而数据库接受是DBNULL.Value

  2.数据转换问题:System.InvalidCastException: 对象不能从 DBNull 转换为其他类型。

    注:我用的是类型精准匹配的方案,可以根据需要改成泛型版本,不过那时候default的处理以及异常获取需要处理一下,原生的struct的大多数还是通用的,但是涉及到引用类型以及一些特殊的struct就需要特别处理了。

     public static int ToInt32(this string s, int defVal = default)
        {
            try
            {
                return Convert.ToInt32(s);
            }
            catch (FormatException)
            {
                return defVal;
            }
            catch (OverflowException)
            {
                return defVal;
            }
        }
        public static int ToInt32(this object s, int defVal = default)
        {
            if (s == DBNull.Value)
                s = defVal;
            return s.ToString().ToInt32();
        }

 

Git相关异常:

  1.warning: LF will be replaced by CRLF in Arvin.Other/Arvin.Other.csproj.

     git config --global core.autocrlf false 

    windows下进行 git add ./ 时可能出现该异常导致无法将文件提交到暂存区,更改配置后就可以正常提交,然后就按部就班进行Git提交推送就行了

    该异常是由于不同操作系统或运行环境行尾化标准不一致导致的,当core.autocrlf为true时,会根据windows、Linux等操作系统不1.一致进行LF与CRLF之间的转换,false后就无需关心此问题,当然,只限于在windows下,Linux没有验证过不发表意见

 

服务器相关异常:

  IIS:

    异常:不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny")......

    原因:IIS 7 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改

    处理:

      节点名称为handlers    C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers

      节点名称为modules    C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

    异常:由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加MIME映射

    处理:

      win10:控制面板->打开或关闭windows功能->Internet信息服务->万维网服务->应用程序开发功能,勾选上“.net扩展性”、“ASP.NET”、“ISAPI扩展”、"ISAPI筛选器"

      winserver2012:服务器管理器->添加角色和功能->服务器角色->Web服务器(IIS)->应用程序开发->勾选上“Asp.Net 4.5”

暂时就这样,未完待续...

posted @ 2020-11-13 10:01  ArvinJing  阅读(135)  评论(0编辑  收藏  举报