MissingMethodException: Method not found

2021-04-26  乐帮网

c# netcore

ASP.Net Core 3.1的Web项目报错如下:An unhandled exception occurred while processing the request. MissingMethodException: Method not found:  Microsoft.AspNetCore.Mvc.ContentResult Microsoft.AspNetCore.Mvc.ControllerBase.Content(System.String, Microsoft.Net.Http.Headers.MediaTypeHeaderValue)

看到这个提示当然知道是因为方法Microsoft.AspNetCore.Mvc.ControllerBase.Content没有找到相应的实现造成的。我当时是建的一个Razor类库,生成的依赖项可能 缺少。即使我已经引入了MVC相关的包仍然是相同的错误。最后的解决办法是把项目类型改为Web类型,详细过程如下:在Visual Studio中右键项目文件 选择“编辑项目文件”。
以前的项目文件

<Project Sdk="Microsoft.NET.Sdk.Razor">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
	<EnableDefaultContentItems>false</EnableDefaultContentItems>
	<RazorCompileOnPublish>true</RazorCompileOnPublish>
	<RazorCompileOnBuild>true</RazorCompileOnBuild>
  </PropertyGroup>
  <ItemGroup>
	  <Content Include="wwwroot\*">
		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </Content>
	  <Content Include="wwwroot\**\*">
		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </Content>
  </ItemGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\dom.lib.core\dom.lib.core.csproj" />
    <ProjectReference Include="..\dom.plugin.base\dom.plugin.ibase.csproj">
		<Private>false</Private>
		<ExcludeAssets>runtime</ExcludeAssets>
	 </ProjectReference>
  </ItemGroup>
</Project>

改为:

<Project Sdk="Microsoft.NET.Sdk.Web">
  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AddRazorSupportForMvc>true</AddRazorSupportForMvc>
	<EnableDefaultContentItems>false</EnableDefaultContentItems>
	<RazorCompileOnPublish>true</RazorCompileOnPublish>
	<RazorCompileOnBuild>true</RazorCompileOnBuild>
  </PropertyGroup>
  <ItemGroup>
	  <Content Include="wwwroot\*">
		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </Content>
	  <Content Include="wwwroot\**\*">
		  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
	  </Content>
  </ItemGroup>

  <ItemGroup>
    <FrameworkReference Include="Microsoft.AspNetCore.App" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.2.0" />
    <PackageReference Include="Newtonsoft.Json" Version="12.0.3" />
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\dom.lib.core\dom.lib.core.csproj" />
    <ProjectReference Include="..\dom.plugin.base\dom.plugin.ibase.csproj">
		<Private>false</Private>
		<ExcludeAssets>runtime</ExcludeAssets>
	 </ProjectReference>
  </ItemGroup>
</Project>

主要修改项为:Project Sdk="Microsoft.NET.Sdk.Web"。这样在项目引用的Web Mvc相关的所有功能都能添加进去了,不然得全部手动引用,相互依赖关系处理很麻烦。在最终使用dotnet publish时提示缺少入口函数,只需要手动建一个空的就可以了。

 public class Program
    {
        public static void Main(string[] args)
        {;
        }
    }

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力