.net EF6抛出错误,从不同的机器调用exe';s共享文件夹
使用.NETFramework4.0和EF6.0开发了一个exe。它在安装了.Net framework 4.0和4.5完整版本的机器上运行良好。 但当我从不同机器的共享文件夹调用相同的exe时,它会抛出错误。这是因为配置中的entityframework标记 服务器计算机已安装.Net 4.5的共享文件夹。SharedFolder包含使用.Net 4.0开发的exe.net EF6抛出错误,从不同的机器调用exe';s共享文件夹,.net,sql-server,entity-framework-6,.net,Sql Server,Entity Framework 6,使用.NETFramework4.0和EF6.0开发了一个exe。它在安装了.Net framework 4.0和4.5完整版本的机器上运行良好。 但当我从不同机器的共享文件夹调用相同的exe时,它会抛出错误。这是因为配置中的entityframework标记 服务器计算机已安装.Net 4.5的共享文件夹。SharedFolder包含使用.Net 4.0开发的exe 如果用户在servermachine中打开sharedFolder的exe,则从clientmachine(已安装4.0)获取
- 如果用户在servermachine中打开sharedFolder的exe,则从clientmachine(已安装4.0)获取以下错误。
- 当客户机和服务器机器具有4.5框架时,它可以正常工作
- 直接在客户机(4.0)和服务器(4.5)中打开时工作 机器
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<connectionStrings>
<add name="ERP-DB" connectionString="Data Source=testserver;Initial Catalog=db;user Id=**;Password=**" providerName="System.Data.SqlClient" />
</connectionStrings>
<entityFramework>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
</entityFramework>
<system.data>
<DbProviderFactories>
<add name="EF Caching Data Provider" invariant="EFCachingProvider" description="Caching Provider Wrapper" type="EFCachingProvider.EFCachingProviderFactory, EFCachingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
<add name="EF Tracing Data Provider" invariant="EFTracingProvider" description="Tracing Provider Wrapper" type="EFTracingProvider.EFTracingProviderFactory, EFTracingProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
<add name="EF Generic Provider Wrapper" invariant="EFProviderWrapper" description="Generic Provider Wrapper" type="EFProviderWrapperToolkit.EFProviderWrapperFactory, EFProviderWrapperToolkit, Version=1.0.0.0, Culture=neutral, PublicKeyToken=def642f226e0e59b" />
</DbProviderFactories>
</system.data>
</configuration>
听起来问题系统上安装了。在客户端PC上安装完整框架应该可以解决此问题
Microsoft.NET Framework 4(完整版)可在以下位置找到:
还有一个解决方案
移除下面的标签后,它工作了
<entityFramework>
<!--<defaultConnectionFactory type="System.Data.Entity.CrossCutting.SqlConnectionFactory, EntityFramework"/>-->
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>
伙计们,这个标签是强制性的吗
从我的机器(.Net 4.0安装),如果我从不同机器的(.Net 4.5.1安装)共享文件夹执行exe,当exe的配置有上述标记时,它会抛出错误。如果我删除了上面的标签,它就可以工作
如果我们在本地计算机(.Net 4.0)中执行相同的exe,它可以使用或不使用上述标记。EF是复制到项目文件夹还是从GAC加载的?“问题系统”上加载的版本是否可能与其他版本不同?哦,这是什么类型的应用程序?WPF/winforms/web?@DavidKirkland,这是winform应用程序。是,EF文件在项目文件夹中可用。如果用户在服务器计算机中执行exe,则它正在运行。如果用户从另一台计算机(共享服务器文件夹)调用相同的exe,则会出现此错误(客户端计算机已安装.net framework 4.0)。因此,您是否从客户端计算机上的Windows共享运行应用程序?@DavidKirkland。是从windows共享调用exe。它适用于大多数客户和我们的测试环境。只有一个特定客户的客户端计算机出现此错误。但是,如果我们在服务器计算机(windows共享可用)中执行相同的exe,它就可以工作。machine.config是否会导致此问题?作为一个实验,我会尝试将该文件夹复制到客户端系统并在本地执行。如果它仍然不起作用,至少你已经排除了这个原因。。。此外,您还可以尝试在有问题的系统上启用Fusion日志记录,以防出现某种DLL冲突,并且无法正确加载某些内容。很高兴听到它正在工作!我不止一次被“客户档案”限制所困扰。
<entityFramework>
<!--<defaultConnectionFactory type="System.Data.Entity.CrossCutting.SqlConnectionFactory, EntityFramework"/>-->
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
</providers>
</entityFramework>