我们在ASP.NET站点上实现了一些调用远程服务的SOAP客户端代码。实现基本上是通过使用Visual Studio“添加Web引用”向导,在代码中添加适当的“使用remote.service.namespace”并调用服务来完成的。
代码在本地(从Visual Studio)完美运行,但在缺少程序集引用错误的生产Web服务器上失败:
CS0246:找不到类型或命名空间名称'remote.service'(您是否缺少using指令或程序集引用?)
我有一种偷偷摸摸的怀疑,我没有正确地部署一切,也许有人可以指出我在那里失踪的是什么?
谢谢!
其他信息:
项目是一个网站。
ASP.NET版本2.0已安装并用作开发框和生产服务器上的目标。
WSDL.exe生成的代理文件部署到网站的根文件夹中,该页面所在的文件夹所在的文件夹。全局命名空间(默认)用于代理类生成。
答案 0 :(得分:2)
如果这是一个WebSite项目,那么代理文件应该驻留在App_Code文件夹
中答案 1 :(得分:1)
您提到代理dll位于“网站的根文件夹,页面所在的位置”。
您应该将dll放在“bin”文件夹中。如果文件夹不存在则创建它。
答案 2 :(得分:1)
.NET中的Web服务客户端堆栈执行代理客户端的运行时生成(来自wsdl.exe / svcutil.exe生成的类中的注释)。这个生成的文件通常最终出现在你的一个服务器临时目录中(某个主窗口树下有一个)。问题是ASP.NET用户帐户没有权限写入此特定临时目录,但在写入文件时没有注意到,因此您最终会尝试加载生成的错误归档。根据服务器上的确切安装顺序,您可能会遇到这种情况。一旦找到正确的目录,您只需修复目录上的NTFS权限即可解决问题。
答案 3 :(得分:0)
您是否将App_WebReferences文件夹及其所有内容复制到服务器?
答案 4 :(得分:0)
ASP.NET网站的其他部分是否有效?
您的网站目标3.5和生产服务器上是否未安装3.5?
答案 5 :(得分:0)
这是一个网站还是一个Web应用程序项目?我打赌这是一个网站。