【问题标题】:Able to consume web service in Visual Studio 2008 but not in 2010能够在 Visual Studio 2008 中使用 Web 服务,但不能在 2010 中使用
【发布时间】:2013-04-22 21:32:16
【问题描述】:

我正在尝试使用 Visual Studio 2010 中用 Java (XFire) 创建的 Web 服务。该服务在 Visual Studio 2008 中运行没有问题。在这两种情况下,我都使用 Web 引用来访问服务。我也试过 svcutil.exe 生成 web 服务消费者代码并遍历它,它仍然不会返回数据。

我可以访问 log4j 日志,但我没有看到导致 Java 端执行的调用。

有人知道我是否在某处缺少设置吗?或者,如果在 2010 年通过网络参考使用网络服务更加严格。

在下面的代码中,rwsResponse 是一些东西,但在调用 retrieveWorker 之后 rwsResponse.WorkerServiceResponse 是 Nothing:

Dim rwsService As New rws.WorkerService
Dim rwsResponse As New rws.retrieveWorkerResponse
Dim rwsRequest As New rws.retrieveWorker

rwsRequest.SearchOption = New rws.RetrieveKeyType()
rwsRequest.SearchOption.Items = New String() {userID}
rwsRequest.SearchOption.ItemsElementName = New rws.ItemsChoiceType() {rws.ItemsChoiceType.user_Id}

rwsResponse = rwsService.retrieveWorker(rwsRequest)

Dim rwsWorker As rws.EnterpriseWorkerType
Dim rwsMessage As rws.MessageType

If rwsResponse Is Nothing OrElse rwsResponse.WorkerServiceResponse Is Nothing Then
    Throw New Exception(String.Format("retrieveWorkerService:WorkerServiceResponse is null{0}userID:{1}", vbCrLf, userID))
End If

奇怪的是这段代码在 Visual Studio .NET 2008 中运行良好。2008 和 2010 都针对这个应用程序的 3.5。

【问题讨论】:

  • 在调用.retreiveWorker()之前,rwsRequestserialized值是多少?和2008年一样吗?即是否将相同的值发送到服务?您可以为此使用 Fiddler。同时,您将能够找到返回的响应。
  • VB.NET 命令行 exe.
  • 我可以看到 2010 年和 2008 年的 SearchOption Item 值。感谢 Fiddler 的建议。我试试看。
  • 通过使用 Fiddler,我能够确认 Web 服务正在返回有效的 SOAP 响应。 IDE 无法将该响应序列化到 rwsResponse 对象中。

标签: vb.net visual-studio-2010 web-services visual-studio-2008


【解决方案1】:

尝试使用旧方式引用 Web 服务。 当您执行“添加服务引用”时,在出现的对话框中,单击按钮左角的“高级”按钮,然后单击添加 Web 引用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-01
    • 2011-07-12
    相关资源
    最近更新 更多