【发布时间】:2017-12-05 17:27:32
【问题描述】:
将工作的 SOAP WCF 转换为 REST 并仍然使用读取并返回我需要的值的函数。
ActiveCallService 在 VB 中使用 SOAP 读取实体以返回多个记录。更改为 REST 时如何对其进行编码以返回所有记录?我尝试了许多不同版本的 uriTemplate,但没有任何效果。我基本上应该读取视图并返回数据而不从 uri 获取任何参数。我使用了来自here 的好例子,但是那个是手动编码从循环返回的值,我有一个函数可以读取并返回我需要的值。
WebGet 行上的当前 IActiveCalls.vb 代码 - 错误状态 - 需要常量表达式。 C:\inetpub\VS2013\wcfWazeP1\IActiveCalls.vb 10 13 WcfWazeP1。
Public Interface IActiveCalls
Property UriTemplate As String
<WebGet(UriTemplate = "Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents)")>
<OperationContract()>
Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents)
Implements IActiveCalls
Dim dbP1RDW As New ReportingDWEntities
Public Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents) Implements IActiveCalls.GetWazeCalls
Return dbP1RDW.DIT_CurrentSOTrafficIncidents.OrderBy(Function(o) o.IncidentDate).ToList()
End Function
<DataContract()>
Public Class ActiveCalls
End Class
Implement 行上的我的 ActiveCalls.vb 代码 - 错误状态 - 类“ActiveCallsService”必须为接口“IActiveCalls”实现“Property UriTemplate As String”。实现属性必须具有匹配的“ReadOnly”或“WriteOnly”说明符。 C:\inetpub\VS2013\wcfWazeP1\ActiveCalls.vb 9 16 WcfWazeP1.
Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Runtime.Serialization
Imports System.ServiceModel
Imports System.Text
Public Class ActiveCallsService
Implements IActiveCalls
Dim dbP1RDW As New ReportingDWEntities
Public Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents) Implements IActiveCalls.GetWazeCalls
Return dbP1RDW.DIT_CurrentSOTrafficIncidents.OrderBy(Function(o) o.IncidentDate).ToList()
End Function
End Class
12/07/2017 感谢 GMan80013,更改后。仍然有阻止它运行的错误。我尝试了 UriTemplate 声明的几个位置,但没有成功。 UriTemplate 的名称有多重要?我可以称之为任何东西,还是应该引用 ActiveCallsService?很抱歉这么不知情。 ActiveCalls.vb 两个错误 1- 未找到字段或属性“UriTemplate”。 C:\inetpub\VS2013\wcfWazeP1\IActiveCalls.vbWcfWazeP1 2- 'WebGetAttribute' 不能用作属性,因为它不是从 'System.Attribute' 继承的。 C:\inetpub\VS2013\wcfWazeP1\IActiveCalls.vb 公共接口 IActiveCalls
Property UriTemplate As String
<WebGet(UriTemplate:="currentSOTrafficeIncidents")>
<OperationContract()>
Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents)
End Interface
ActiveCalls.vb – 我添加了公共属性 UriTemplate,这里没有错误 进口系统 导入 System.Collections.Generic 导入系统.Linq 导入 System.Runtime.Serialization 导入 System.ServiceModel 导入 System.Text
Public Class ActiveCallsService
Implements IActiveCalls
Dim dbP1RDW As New ReportingDWEntities
Public Property UriTemplate As String Implements IActiveCalls.UriTemplate
Public Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents)
Implements IActiveCalls.GetWazeCalls
Return dbP1RDW.DIT_CurrentSOTrafficIncidents.OrderBy(Function(o)
o.IncidentDate).ToList()
End Function
End Class
【问题讨论】: