在同事离开后,我继承了一个项目。我有一个侦听器服务的 C# 项目,该项目将由向我们发送请求和数据的基于云的应用程序调用。所有测试在开发中工作正常,当我在IIS 2008 R2上部署应用程序时出现问题。
Visual Studio 项目中设置的目标框架是 .Net Framework 4.5。
IIS 上包含已编译应用程序的虚拟目录位于设置为使用".Net Framework v4.0.30319"的应用程序池中。从我的研究中,我看到这个框架版本应该适用于为 v4.5 部署的所有应用程序。
虚拟目录包含侦听器的 asmx 文件、Web.Config 文件和包含所有二进制文件的 bin 目录。
当我在IE中调用asmx文件时,出现以下错误:
编译器错误消息:CS0246:找不到类型或命名空间名称"XXX"(是否缺少 using 指令或程序集引用?
引用 XXX 作为 using 语句列出,并且位于同一项目的文件夹结构中。它没有指向一个单独的项目。我阅读了以下Microsoft文章,其中的所有内容似乎都是正确的。但是,末尾的注释表明,当为 .Net 4.5 编译 DLL,然后将目标为 Plattform 4.0 的项目时,也可能引发错误 CS0246。
有人可以确认上述应用程序池设置是否适用于为 .Net v4.5 构建的应用程序,并建议为什么 asmx 文件无法在 Web 服务器上编译?
问题似乎出在包含 XXX 的程序集中 类型。您可能具有此程序集的旧版本或不包含此类型或命名空间的其他版本。
- 找出你的类型的 dll
- 转到 bin 目录并找出此 dll 的哪个版本存在
- 将此版本与开发环境交叉检查。
- 如果这不起作用,则可以从开发环境中手动复制此程序集并放入 IIS 服务器
首先感谢那些花时间回复的人。
问题是我需要将 IIS 上的虚拟目录转换为应用程序。该选项位于虚拟目录树视图的右侧菜单上。如果您选择"查看虚拟目录",则它不可用,这非常有用。