0

在尝试使用 Microsoft Enterprise Library 的 Data Access Application Block 4.1 时,我在部署时遇到了一个奇怪的问题。尝试使用利用 DAAB 的 Web 应用程序元素时,我收到以下未处理异常:

Exception information: 
Exception type: BuildFailedException 
Exception message: The current build operation (build key Build Key[Microsoft.Practices.EnterpriseLibrary.Data.Database, DBNAME]) failed: The type initializer for 'Microsoft.Practices.EnterpriseLibrary.Data.Database' threw an exception. (Strategy type ConfiguredObjectStrategy, index 2) 

我的 web.config 有以下连接字符串部分:

    <connectionStrings configSource="data.config" />

并且 data.config 包含异常中引用的 DBNAME 条目:

<?xml version="1.0"?>

<connectionStrings>`

<add name="dbname"
    providerName="System.Data.SqlClient"
    connectionString="[valid information here]" />

</connectionStrings>

我知道连接字符串是有效的,因为应用程序中未使用 DAAB 进行数据访问的部分正在使用相同的连接字符串,没有任何问题。此外,在我的开发机器以及其他开发人员的机器上一切正常。这仅在部署到生产服务器时发生,甚至不特定于“发布”版本,因为该版本在我的本地机器上也可以正常运行。

我怀疑这可能是生产服务器的配置问题,但我无法弄清楚它可能是什么。关于部署企业库的 MSDN 文章提到程序集的 xcopy 部署应该可以工作,我将它们包含在 /bin 文件夹中,所以我不确定从那里去哪里。有任何想法吗?

4

2 回答 2

1

好吧,当您添加引用时,它确实会给您一个警告。至少它在我的机器上是这样的。所以你的投诉没有坚实的基础。:)

但是,异常消息完全模棱两可,因此感谢您提供的信息。

于 2009-07-12T04:29:40.153 回答
0

终于想通了。Enterprise Library 4.1 需要 Framework 3.5,尽管我们的应用程序仍然以 Framework 2.0 为目标,但由于使用 Visual Studio 2008,我们的开发机器上安装了 3.5。但是,我们没有在生产服务器上安装 Framework 3.5,并且这样做后问题就消失了。

令人费解的是,我在我的解决方案中的所有项目中都明确将 2.0 编译为目标,包括依赖于企业库的项目,因此您认为引用需要 3.5 的程序集至少会在编译时产生警告。那好吧。

于 2009-06-02T21:01:27.260 回答