zoukankan      html  css  js  c++  java
  • WebApi.Models.VersionHttpControllerSelector”的方法“SelectController”没有实现。

    背景交代:

       WebApi为了实现根据不同的版本,跳转不同的接口地址 ,重写了IHttpControllerSelector

    重写的类 类似于  https://www.cnblogs.com/tx720/p/7666356.html

    里面有一个SelectController方法,之前一直没报错

    /// <summary>
    /// 对应于自定义控制选择器的命名空间,
    /// 将从HTTP请求消息中获取命名空间和控制器
    /// 然后在字典中查找匹配的控制器
    /// </summary>
    /// <param name="request"></param>
    /// <returns></returns>
    public HttpControllerDescriptor SelectController(HttpRequestMessage request)
    {
    }

    今天更新接口的时候,本地未跑起来测试,而是编译通过后直接替换文件到服务器测试接口,结果一运行提示某dll找不到。

    按照以往的经验,我只是简单的在webconfig将

    System.Net.Http,从默认高版本,改为了提示错误的4.0.0.0

    又把System.Runtime,从默认高版本,改为了提示错误的 4.0.0.0

    改完后本地运行正常, 发布到服务器测试环境就提示   WebApi.Models.VersionHttpControllerSelector”的方法“SelectController”没有实现。

    而这个方法就没有更改过。然后就怀疑是否是引进了计划任务类导致冲突,本来准备去掉更新的任务计划相关代码后测试。

    后来就想试试看本地System.Net.Http和System.Runtime的实际版本

    结果一看发现本地版本都高于4.0.0.0   

    修改webconfig为本地版本后,本地正常,更新到服务器测试版本  运行正常,问题解决。

    <dependentAssembly>
            <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
          </dependentAssembly>

    后记:更新服务器接口时切记备份原来的文件,以防替换文件导致接口挂掉!!!(即使在本地正常, 也不能保证在服务器就一定正常)

      

  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/yhnet/p/14804302.html
Copyright © 2011-2022 走看看