【问题标题】:WCF in IIS How do I update a dll in the bin folder?IIS 中的 WCF 如何更新 bin 文件夹中的 dll?
【发布时间】:2010-02-05 16:41:55
【问题描述】:

我是 WCF 的新手。我在 iis 中有 wcf 服务运行良好。我对主类为 DAL 的 DataAccessLibrary.dll 进行了代码更改。 service.cs 文件引用了这个 dll。我将新的 dll 放入 bin 文件夹中。现在在 service.cs 代码中抛出一个错误,上面写着“DAL 在当前上下文中不存在”我认为这与引用旧 dll 而不是新 dll 的 service.cs 类有关。但我不确定如何修复它。

【问题讨论】:

    标签: wcf iis service


    【解决方案1】:

    更糟糕的情况是,如果您的服务代码在 Visual Studio 中引用 DAL 程序集,则再次打开 WCF 项目/解决方案,确保引用是最新的 DAL(通过项目引用或 DLL 引用) 并重建/重新发布。

    可能有更好的方法,但这应该作为后备选项...

    编辑:

    为了提供一些可能更有效的 WCF 开发方式的反馈 - 以下是我们在这些系统上的工作方式:

    1. DAL、Core 业务程序集等外部通用库存储在网络上(例如在\\DEVSTORE\CommonAssemblies\DAL\MyDal.dll 等UNC 下)
    2. 在 Visual Studio 的 WCF 应用程序中,添加对网络上 DLL 的实际引用。默认设置会在构建过程中将 dll 本地复制到 bin 文件夹中
    3. 使用 Visual Studio 中的发布功能将 svc、bin 文件夹、web.config 等输出到临时文件夹或 IIS 应用程序文件夹本身。
    4. 在 VS 中处理公共 DAL 或其他公共库时,只需确保在构建时将 DLL 的副本放到公共网络位置。

    提供非常简单的开发体验。

    【讨论】:

    • 重新发布是指将所有必要的文件(接口文件、服务类文件和 dll)放到 IIS 中的正确文件夹中? Web 服务项目没有通过“添加引用”选项添加任何引用。不过,接口类和服务类都有 DataAccessLibrary.dll 的 using 语句。查看解决方案资源管理器,它确实有一个 Bin 文件夹,其中包含解决方案中其他项目的所有 dll。这个项目是继承的,所以我不太了解它。
    • 所以 DAL 程序集必须手动添加到 Visual Studio 中 WCF 项目的 bin 文件夹中,否则它永远不会构建(与您所说的相同的错误)...如果您有VS 中的 WCF 解决方案,检查 DLL 的 bin 文件夹,您可能需要在那里覆盖它。您做了什么类型的代码更改(即新功能、命名空间更改、访问级别更改 - 私有/公共等)?
    • 不是那样的,DAL 库中有一个方法可以查询数据库。我所做的只是在 SQL 中添加另一个“AND”条件。我已验证该代码有效。我有一个使用相同 DAL 库的 Windows 服务,它可以正常工作。问题是在 service.cs 代码中调用时无法识别 DAL 类名本身。我将尝试覆盖 wcf 项目的 Bin 文件夹中的 dll,然后重新构建/部署到 IIS。我会在一分钟内回复你
    • 好的,我从 Bin 中删除了旧的 dll,并从 DAL 项目中添加了新的 dll,现在“DAL 在当前上下文中不存在”作为 service.cs 中的构建错误被抛出班级。我还没有部署到 IIS - 这是在 VS 中
    • Ok nvm 由于某种原因 DAL 类名更改为 Dal,所以当我将 service.cs 代码从 DAL.method() 更改为 Dal.method() 时,它构建得很好
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多