0

我知道已针对此特定错误消息提出了多个问题,但没有一个与我所经历的有关。

我有一个 Silverlight 和 WCF 项目。我正在调用 wcf 服务并很好地检索数据。我的服务中有多种功能,它们都工作得很好。

我的问题是,我调用了刚刚创建的函数,并收到“远程服务器返回错误:未找到”错误消息。不知道为什么。我已经构建了 wcf 项目并在 silverlight 中更新了服务。错误列表不显示任何内容。

任何帮助将不胜感激!!!!

我有一个类级别的变量,它是我的 Web 服务。

Silverlight 中的代码:

Private WithEvents Service As WebService.SQLServiceClient = GetNewService()

Private Sub btnSave_Click(sender As Object, e As System.Windows.RoutedEventArgs) Handles btnSave.Click
    Dim View As PagedCollectionView = dgDeficiences.ItemsSource

    Service.SaveChangesAsync(txtLOB.Text, View.SourceCollection)
End Sub

WCF 中的代码:

<OperationContract()>
Public Function SaveChanges(ByVal LOB As String, ByVal Deficiences As List(Of Deficiences)) As Boolean
    Dim DT_Old, DT_New, DT_Changes As DataTable
    Dim Conn As New SqlConnection(ConnectionString)
    Dim Cmd As New SqlCommand(String.Empty, Conn)

    DT_Old = GetSQLData(CommandType.StoredProcedure, "EHL_GetLookups", {"Section", "Data"}, {3, LOB})

    If DT_Old.Rows.Count < 1 Then Return False

    'Copy deficiencies in sql to DT_New
    DT_New = DT_Old.Copy

    'Update 3 fields with data user provided
    For i As Integer = 0 To Deficiences.Count - 1
        'Find deficiency row to update by ID field
        For j As Integer = 0 To DT_New.Rows.Count - 1
            If DT_New.Rows(j)("DeficiencyID") = Deficiences(i).DeficiencyID Then
                DT_New.Rows(j)("Status") = Deficiences(i).Status
                DT_New.Rows(j)("PatternOfCare") = Deficiences(i).PatternOfCare
                DT_New.Rows(j)("MarketNarrative") = Deficiences(i).MarketNarrative

                Continue For 'Next Deficiency
            End If
        Next
    Next

    'Set primary key so merge works correctly
    DT_Old.PrimaryKey = {DT_Old.Columns("DeficiencyID")}
    DT_New.PrimaryKey = {DT_New.Columns("DeficiencyID")}

    'Make sure all row status = unchanges
    DT_Old.AcceptChanges()

    'Merge user's changes to data in database
    DT_Old.Merge(DT_New)

    'Get rows with changes 
    DT_Changes = DT_Old.GetChanges()

    'Save changes to SQL
    For i As Integer = 0 To DT_Changes.Rows.Count - 1
        Cmd.CommandText = "UPDATE dbo.EHL_Deficiency_NewEHLTest " _
                        & "SET Status='" & DT_Changes.Rows(i)("Status") & "', Pattern_Of_Care='" & DT_Changes.Rows(i)("PatternOfCare") & "', Market_Narrative='" & DT_Changes.Rows(i)("PatternOfCare") & "' " _
                        & "WHERE DeficiencyID=" & DT_Changes.Rows(i)("DeficiencyID")

        Cmd.ExecuteNonQuery()
    Next

    If DT_Changes.Rows.Count < 1 Then Return False Else Return True
End Function
4

2 回答 2

0

对于silverlight,它是一个非常常见的错误,首先你得到的错误是一个通用错误,silverlight 应用程序显示任何服务端错误。现在解决方案,尝试找出此错误的根本原因。有多种方法可以做到这一点。下面是我使用的那个: 1) 将以下代码添加到您的 wcf 服务配置文件中 复制代码 <system.diagnostics> <sources> <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true"> <listeners> <add name="traceListener" type="System.Diagnostics.XmlWriterTraceListener" initializeData= "D:\Sumit.svclog"/> </listeners> </source> </sources> </system.diagnostics>

这将生成一个 .svc,分析此文件将为您提供大量信息。

2)你可以使用外部工具来分析wcf服务调用,例如fiddler。在这种情况下也尝试分析服务调用

于 2014-01-04T09:51:47.597 回答
0

在您的启动项目的配置文件中,您应该有一个像这样的条目

<system.serviceModel>
    <client>
      <endpoint address="ENDPOINT Address"
        (other stuff)
      </endpoint>

验证端点地址是否指向您用于生成引用的同一实例。如果您的服务参考不在您的启动项目中,那么您需要从项目中复制(正确的)配置条目以及对您的启动项目的引用。

于 2013-09-10T16:47:03.207 回答