错误System.BadImageFormatException服务结构

时间:2018-02-13 06:50:26

标签: azure asp.net-core azure-service-fabric service-fabric-stateless

问题

我正在构建服务架构应用程序。当我创建一个项目并运行它工作正常。但是当我在Api控制器中注入一个服务时,它给了我这个错误,我试图解决它,但还没有成功。

错误

  

System.BadImageFormatException   无法加载文件或程序集“dotnet-aspnet-codegenerator-design'或其中一个依赖项。试图加载格式不正确的程序。

图像

enter image description here

我添加了服务

protected override IEnumerable<ServiceInstanceListener> CreateServiceInstanceListeners()
        {
            return new ServiceInstanceListener[]
            {
                new ServiceInstanceListener(serviceContext =>
                    new KestrelCommunicationListener(serviceContext, "ServiceEndpoint", (url, listener) =>
                    {
                        ServiceEventSource.Current.ServiceMessage(serviceContext, $"Starting Kestrel on {url}");

                        return new WebHostBuilder()
                                    .UseKestrel()
                                    .ConfigureServices(
                                        services => services
                                            .AddSingleton<StatelessServiceContext>(serviceContext)
                                            .AddScoped(typeof(ISendMessage), typeof(SendMessage))
                                            )
                                    .UseContentRoot(Directory.GetCurrentDirectory())
                                    .UseStartup<Startup>()
                                    .UseServiceFabricIntegration(listener, ServiceFabricIntegrationOptions.None)
                                    .UseUrls(url)
                                    .Build();
                    }))
            };
        }

3 个答案:

答案 0 :(得分:2)

您的服务或其任何依赖项可能都是针对 x86平台

要解决此问题,您必须强制您的服务在 x64 上运行和/或替换 x64 的所有 x86 依赖项。

如果您正在运行dotnet-core,请确保同时安装了x64工具。

您也可以尝试删除项目中Microsoft.VisualStudio.Web.CodeGeneration.Design的引用,如上所述here

  

这些SO问题可能会为您提供更多信息:

     

service fabric system badimageformatexception

     

badimageformatexception when migrating from aspnet core 1.1 to 2.0

答案 1 :(得分:2)

这是我们前面遇到的一个问题,当你尝试添加asp.net核心控制器时会出现这个问题。出于某种原因,visual studio添加了对&#34; Microsoft.VisualStudio.Web.CodeGeneration.Design&#34;的引用。

我的想法是删除引用,也不使用Project-&gt; Add-&gt; Controller添加控制器。 enter image description here

只需添加基本代码文件并从早期控制器复制内容即可。 enter image description here

enter image description here

答案 2 :(得分:1)

要解决此问题,只需按照以下步骤操作:

  
      
  • 打开项目属性窗口。
  •   
  • 选择构建标签
  •   
  • 将其更改为“任何CPU”
  •   
  • 保存更改。
  •   
  • 编译项​​目并运行

      enter image description here
  •   

编辑1:

  

Service febric targets x64位然后单击Platform下拉列表并选择New,然后创建x64平台配置。