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

时间:2016-04-26 01:04:32

标签: c# asp.net asp.net-mvc-4 asp.net-web-api .net-4.5

我有一个名为GetJSONResponse(...)的方法,这里有一个摘录:

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

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

  

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

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

2 个答案:

答案 0 :(得分:8)

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

错误的一个:

...
File _dirPath = new File(_sdcardPath + "/CreateFolder");
...

正确的一个:

<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>

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

......想一想,这也是API Help Page有问题的原因。由于此问题,<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> 无法编译和运行,但它现在可以正常工作。 ;)导致此错误:找不到方法:'System.Net.Http.HttpMethod System.Web.Http.Description.ApiDescription.get_HttpMethod()'。

答案 1 :(得分:0)

我取消了相对于RC版本的NuGet包并安装了新版本它将采用新版本。我认为这解决了问题