【问题标题】:Getting the infamous "The remote server returned an error: NotFound" error获得臭名昭著的“远程服务器返回错误:NotFound”错误
【发布时间】:2009-08-20 23:40:55
【问题描述】:

伙计们。我对 Silverlight 和 WCF 都很陌生。我想要做的是为我的 Silverlight 对象提供一个数据库连接。不过,我遇到的问题是我的 Web 服务虽然编译得很好,但似乎根本没有返回任何东西。我使用了 Fiddler,并尝试了自定义请求,但服务本身根本没有返回任何内容。

我的服务代码:

Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.Data.OleDb
Imports System.Runtime.Serialization

<ServiceContract(Namespace:="")> _ 
<AspNetCompatibilityRequirements(RequirementsMode := AspNetCompatibilityRequirementsMode.Allowed)> _ 
Public Class DBConnection

    Dim dbConn As OleDbConnection

    Private Function OpenConnection(ByVal strConnection As String) As Boolean
        Try
            Dim blnConnected As Boolean = False
            dbConn = New OleDbConnection(strConnection)
            dbConn.Open()
        Catch ex As OleDbException
            Return False
        End Try
        Return True
    End Function

    Private Function CloseConnection() As Boolean
        Try
            dbConn.Close()
            dbConn = Nothing
        Catch ex As OleDbException
            Return False
        End Try
        Return True
    End Function

    <OperationContract()> _
    Public Function GetDataTable(ByVal strSQL As String, ByVal strConnection As String) As DataTable
        If dbConn Is Nothing Then OpenConnection(strConnection)

        Dim dtTable As New DataTable
        Dim dbAdapter As New OleDbDataAdapter(strSQL, dbConn)

        dbAdapter.Fill(dtTable)

        CloseConnection()

        Return dtTable
    End Function
End Class

当我在 GetDataTable 的最后一行断点时,那里有结果。而且我知道它也会因此而影响服务。

很明显,我做错了什么,但我完全不知道是什么。

【问题讨论】:

标签: wcf silverlight


【解决方案1】:

如果你看到了,你一定在 Fiddler 中得到了一些东西

“远程服务器返回错误:NotFound”错误。

至少有 HTTP 错误代码吗?

----- 更新

使用 DataSet 而不是 DataTable 作为返回类型。在返回之前将表放入 DataSet 中并获取第一个表。

【讨论】:

  • 这就是奇怪的部分; Fiddler 返回错误代码 0。据我所知,一旦返回对象,WCF 会话就会终止,但绝对没有响应数据。此外,当我遇到预先生成的 EndInvoke 代码时,我的代码中出现 NotFound 错误。就像它试图调用的函数不存在一样。
  • 我想知道你的 WCF 是否可以处理这个大小,你可能需要增加缓冲区的大小。您可以尝试将表放入数据集中并返回以查看它是否有效?
  • 惊喜,惊喜。将其更改为 DataSet 会使其返回某些内容。棒极了。那么我该如何解决呢?
  • 哦,太好了,然后只需将返回类型替换为 DataSet 并在 DataSet 的 Table 属性中。附加您的表(即 ds.Tables.Add(mytable)。从客户端,只需打开第一个数据集中的表,即 dim dt as datatable = datasets.Table(0).
  • 完美!这将允许我按摩响应来做我需要它做的事情。谢谢!
猜你喜欢
  • 2011-04-14
  • 2012-09-07
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多