代码之家  ›  专栏  ›  技术社区  ›  Chris Conway

.NET 1.1 Windows应用程序无法调用.NET 3.5 Web服务

  •  4
  • Chris Conway  · 技术社区  · 16 年前

    我有个奇怪的问题。我有一个在2.0框架下编译的web服务,它被一个用1.1框架编译的windows应用程序使用。这很管用。现在,在将web服务升级到3.5框架之后,windows应用程序无法再调用它。

    在3.5中创建一个小的windows应用程序作为测试,可以毫无问题地调用web服务,所以我知道它仍然可以工作。

    代码中没有任何变化,只是编译为3.5项目而不是2.0项目。

    对于那些在乎我犯了什么错误的人来说,是这样的:

    类型的未处理异常 “system.net.webexception”发生在 系统.web.services.dll

    其他信息:基础连接已关闭:一个 上发生意外错误 接收。

    我能对web服务做些什么使其向后兼容吗(如果这甚至是问题的话)?

    [编辑]对下面答案的响应(到目前为止):重新发现不起作用,删除和重新添加webservice也不起作用。我不认为这是一个soap问题,因为wsdl是相同的(两者都显示soap 1.2)。从服务器浏览到webservice工作正常。

    6 回复  |  直到 15 年前
        1
  •  1
  •   leppie    16 年前

    尝试在.NET1.1中“重新发现”Web服务(可能只是一个测试应用程序),并查看问题是否仍然存在。

        2
  •  1
  •   Pete    16 年前

    可能是soap 1.0,而不是soap1.1。默认情况下,3.5服务可能使用1.1或1.2,我认为可以在web.config绑定中配置。

        3
  •  1
  •   JacquesB    16 年前

    这可能是keepalives的问题(例如,通过代理)。作为测试,将下面的代码添加到客户端中生成的reference.cs中(丑陋——是)。我已经看到了使用fiddler(它是一个代理)测试客户机和服务器之间的通信时出现的问题。

        // Put this override in the generated Reference.cs of the client proxy
        protected override System.Net.WebRequest GetWebRequest(Uri uri)
        {
            HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
    
            webRequest.KeepAlive = false;
            webRequest.ProtocolVersion = HttpVersion.Version10;
            return webRequest;
        }
    
        4
  •  0
  •   oglester    16 年前

    你能直接在iis安装上使用web服务吗?如果没有,请检查IIS中的应用程序配置。必须切换ASP.NET的版本。

        5
  •  0
  •   J c    16 年前

    作为一个额外的“健全性检查”,3.5web服务能否被 soapUI ?

        6
  •  0
  •   Austin Hayward    15 年前

    我遇到了这个问题,并通过强制服务上的域cred解决了这个问题。

    [WebService].Credentials=System.Net.CredentialCache.DefaultCredentials;

    [WebService].Credentials=新系统.NET.NetworkCredential([用户],[密码],[域]);

    推荐文章