找不到方法:'System.Net.Http.Headers.MediaTypeHeaderValue System.Net.Http.Formatting.JsonMediaTypeFormatter.get_DefaultMediaType()'

Jam*_*ins 6 c# asp.net asp.net-mvc-4 .net-4.5 asp.net-web-api

我有一个名为的方法GetJSONResponse(...),这是一个提取:

var response = new HttpResponseMessage(httpResponseCode)
            {
                Content = objectToSerialize != null ?
                    new ObjectContent(objectToSerialize.GetType(), objectToSerialize, new JsonMediaTypeFormatter(), JsonMediaTypeFormatter.DefaultMediaType.MediaType)
                    : null
            };
Run Code Online (Sandbox Code Playgroud)

一切都运行良好,直到调用此方法,然后我在输入方法之前得到此错误(可能ASP.NET根据需要编译方法?):

找不到方法:'System.Net.Http.Headers.MediaTypeHeaderValue System.Net.Http.Formatting.JsonMediaTypeFormatter.get_DefaultMediaType()'.

最初我认为web.config文件(对于视图)缺少名称空间,我试图添加,但它没有解决任何问题 - 然后我意识到我实际上是通过WebAPI控制器调用它'获取'方法(不是观点).所需的DLL存在(复制到本地是真的),但这似乎仍然失败.很明显,错误意味着无法找到方法,但它编译并启动正常,因为c#文件正确引用了类型而没有问题......任何想法?

Jam*_*ins 9

发现问题:我在主web.config文件中有一个重复的依赖引用:

错了一个:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http"
        publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-2.2.29.0" newVersion="2.2.29.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

正确对象,真爱:

<dependentAssembly>
    <assemblyIdentity name="System.Net.Http"
        publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

正确的一个在列表中更远,所以我没有注意到它是重复的.;)

...想一想,这也是API帮助页面出现问题的原因.ApiDescriptionExtensions.GetFriendlyId()由于这个问题也未能编译和运行,但现在可以正常工作.;)导致此错误:找不到方法:'System.Net.Http.HttpMethod System.Web.Http.Description.ApiDescription.get_HttpMethod()'.

  • FWIW,我的API帮助页面显示“找不到get_HttpMethod()”错误。但是我的Web配置没有针对System.Net.Http的任何绑定重定向。我添加了本文中显示的重定向,从而解决了该问题。 (2认同)