WCF 和 IIS 的实体框架问题
Posted
技术标签:
【中文标题】WCF 和 IIS 的实体框架问题【英文标题】:Entity framework issue with WCF and IIS 【发布时间】:2011-03-18 04:16:19 【问题描述】:我在一台机器上拥有 WCF 服务、MS SQL 数据库和 Visual Studio 2008 开发环境。 操作系统是带有 IIS 7 的 Windows Server 2008。 IIS 7 托管我的 WCF 服务,该服务使用 Microsoft Entity Framework 连接到数据库。目前,我正在使用 Microsoft 的 WCF 测试客户端程序测试 WCF 服务。
问题是当我在 WCF 方法中声明这样的实体时:
NewTestDBEntities db = new NewTestDBEntities();
如果我连接到托管在 IIS 上的 WCF 服务,WCF 服务客户端会显示错误。
这是来自 WCF 服务客户端的错误消息:
调用服务失败。可能原因:服务离线或无法访问;客户端配置与代理不匹配;现有代理无效。有关更多详细信息,请参阅堆栈跟踪。您可以尝试通过启动新代理、恢复到默认配置或刷新服务来恢复。
我知道这条线会引发错误,因为如果我拿走这条线,那么 WCF 调用就会完成。
我也试过通过运行调试器来测试WCF服务(WCF服务客户端是连接到ASP.NET开发服务器,不是IIS),这行代码
NewTestDBEntities db = new NewTestDBEntities();
运行没有错误。有谁知道为什么会这样?
非常感谢。
【问题讨论】:
【参考方案1】:您的 WCF 服务托管在 IIS 中 - 但您是否也将 EF4 所需的连接字符串复制到相关的 web.config
中??
如果只是创建对象上下文(NewTestDBEntities
)失败,通常是因为主机应用程序(此处:IIS)无法使用连接信息。
【讨论】:
@peter:您愿意分享一下您是如何解决这个问题的吗?其他人可能会从中受益 我有一个 ASP .NET 项目,与我的 WCF 服务项目在同一个解决方案中。 ASP .NET 项目基本上引用了 WCF 项目,所以我可以放到 IIS 上。因此,将有两个 .config 文件。我在 WCF 服务项目的配置文件中有连接字符串,但在 ASP .NET 项目中没有配置文件。这就是我遇到的问题。所以解决方法是将连接字符串复制到 ASP .NET 项目中的配置文件中。就是这样!以上是关于WCF 和 IIS 的实体框架问题的主要内容,如果未能解决你的问题,请参考以下文章