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>

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

      

  • 相关阅读:
    Geoserver通过ajax跨域访问服务数据的方法(含用户名密码认证的配置方式)
    123
    递归____蛮好的例子 蓝桥
    博弈_____威佐夫博奕
    123123
    sort
    int ,long , long long类型的范围
    数学推导_循环小数转分数
    下一步:结构体 背包 库函数
    回溯____蓝桥 棋盘
  • 原文地址:https://www.cnblogs.com/yhnet/p/14804302.html
Copyright © 2011-2022 走看看