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>

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

      

  • 相关阅读:
    C++笔记(2018/2/6)
    2017级面向对象程序设计寒假作业1
    谁是你的潜在朋友
    A1095 Cars on Campus (30)(30 分)
    A1083 List Grades (25)(25 分)
    A1075 PAT Judge (25)(25 分)
    A1012 The Best Rank (25)(25 分)
    1009 说反话 (20)(20 分)
    A1055 The World's Richest(25 分)
    A1025 PAT Ranking (25)(25 分)
  • 原文地址:https://www.cnblogs.com/yhnet/p/14804302.html
Copyright © 2011-2022 走看看