加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-web-api – 间歇性“无法加载类型”System.Net.Http.For

发布时间:2020-12-15 20:23:32 所属栏目:asp.Net 来源:网络整理
导读:我正在处理一个包含ASP.NET WebAPI组件的项目. 间歇地,我得到以下错误: Could not load type ‘System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter’ from assembly ‘System.Net.Http.Formatting,Version=5.2.3.0, Culture=neutral,PublicKeyTo
我正在处理一个包含ASP.NET WebAPI组件的项目.

间歇地,我得到以下错误:

Could not load type
‘System.Net.Http.Formatting.FormUrlEncodedMediaTypeFormatter’ from
assembly ‘System.Net.Http.Formatting,Version=5.2.3.0,
Culture=neutral,PublicKeyToken=31bf3856ad364e35’.

源错误指向我的GlobalConfiguration.Configure()调用:

Line 35: { 
Line 36:     AreaRegistration.RegisterAllAreas(); 
Line 37:     GlobalConfiguration.Configure(WebApiConfig.Register); //<-- error here
Line 38:     FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
Line 39:     RouteConfig.RegisterRoutes(RouteTable.Routes);

在我的注册表中,我正在执行以下操作以默认返回JSON:

var appXmlType = config.Formatters.XmlFormatter.SupportedMediaTypes
                 .FirstOrDefault(t => t.MediaType == "application/xml");

if (appXmlType != null)
{
    config.Formatters.XmlFormatter.SupportedMediaTypes.Remove(appXmlType);
}

(不确定来源,但是在本网站的某处发现默认情况下返回JSON,除非调用者询问其他内容)

我想继续返回JSON作为默认内容类型.

该项目包括另外两个(非WebAPI)网站(即MVC5),它们打到WebAPI站点.

这是有趣的事情:

>当应用程序部署到Azure时,不会发生这种情况
>这只会偶尔发生
>通常,我在调试器中运行一个MVC5站点,看到这个问题
>如果我在上述之后直接浏览到WebAPI网站,我会得到“黄色的死亡屏幕”,上面的错误
>有时,即使在冷启动之后,这个错误也不会出现,其他时候会出现

我目前正在解决的问题:

>如果我在调试器中运行WebAPI站点,如果出现错误,它将自动修复
>在调试器(上面)中运行后,我可以在调试器中重新启动一个MVC5站点,并且问题消失

只是重复一遍,当应用程序部署到Azure时,这不会发生.

我有这个项目的多个开发人员,在某个阶段我们都遇到同样的错误.

我参考以下Nuget软件包:

> Microsoft.AspNet.WebApi(版本5.2.3)
> Microsoft.AspNet.WebApi.Client(版本5.2.3)
> Microsoft.AspNet.WebApi.Core(版本5.2.3)
> Microsoft.AspNet.WebApi.Owin(版本5.2.2)
> Microsoft.AspNet.WebApi.WebHost(版本5.2.3)

如果我查看* .csproj文件,我有一个引用以下内容:

<Reference Include="System.Net.Http.Formatting,Culture=neutral,PublicKeyToken=31bf3856ad364e35,processorArchitecture=MSIL">
  <HintPath>..packagesMicrosoft.AspNet.WebApi.Client.5.2.3libnet45System.Net.Http.Formatting.dll</HintPath>
  <Private>True</Private>
</Reference>

我已经检查了该网站的bin文件夹,其中的所有程序集都具有正确的版本,如上所述(包括System.Net.Http.Formatting.dll).

另请注意,在调试和开发过程中,三个网站中的每一个都在本地IIS下运行(外部资源的约束迫使我们这样做),所以我有:

> http:// localhost / site1
> http:// localhost / site2
> http:// localhost / api

进入调试会话变得麻烦,要得到这个错误,然后停止调试,在调试器下启动API站点,然后切换回我在开始时所做的工作.

不知道在哪里去跟踪这里发生了什么.有任何想法吗?

更新 – 2016年7月26日

仍然有这种情况发生.自从发布问题以来,已经更新了WebAPI以在自己的应用程序池中运行,但这似乎没有什么不同.

解决方法

卸载的Web API 2 NuGet软件包 再次安装了Web API 2 NuGet软件包.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读