2017-12-05 12 views
0

作業用SOAP WCFをRESTに変換し、必要な値を読み取り、返す関数を使用します。SOAPをRESTに変換し、関数から多くのレコードを返す

ActiveCallSeviceは、VBでSOAPを使用して複数のレコードを返すようにエンティティを読み取ります。 RESTに変更するときに、どのようにすべてのレコードを返すようにコードすることができますか?私はuriTemplateのさまざまなバージョンを試しましたが、何も動いていません。私は基本的にビューを読み、uriからparmsを取得せずにデータを返す必要があります。私はhereから良い例を使用しましたが、その1つは手作業でループから返された値をコーディングしており、必要な値を読み込んで返す関数があります。

私のIActiveCalls.vbコードは現在WebGet上にあります - エラー状態 - 定数式が必要です。 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 

実装ライン上のマイActiveCalls.vbコード - エラーが-Class 'ActiveCallsServiceは、' インターフェイスのための '文字列としてプロパティUriTemplate' を実装する必要があります国のIActiveCalls "。プロパティの実装には、 '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 2つのエラー 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 輸入を追加しましたSystem.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 

答えて

0

1) URIテンプレート値は、ホスト名の後のURLの部分を表すためのものです。サイトアドレスがhttp://www.myhouse.com/で、クライアントがこのアドレスのすべてのレコードを取得したい場合はhttp://www.myhouse.com/currentSOTrafficIncidents "currentSOTrafficIncidents"はURIテンプレートです。また、エラーの原因である可能性もありますが、:==以外にも、UriTemplateの後に必ず入力してください。これは、パラメータ名を指定するときにいつでも必要です。

<WebGet(UriTemplate:= "currentSOTrafficIncidents")> 
<OperationContract()> 
Function GetWazeCalls() As List(Of DIT_CurrentSOTrafficIncidents) 

2)あなたのインターフェイスでは、Property UriTemplate As Stringを宣言し、このパブリックプロパティはActiveCalls.vbクラスから欠落しています。私はあなたがこれを必要とは思わないし、IActiveCallsクラスから削除することができます。本当にそこに保持したい場合は、これをActiveCalls.vbに追加してエラーを修正してください。

Public Property UriTemplate As String Implements IActiveCalls.UriTemplate 
+0

12/07/2017ありがとうございましたGMAN80013、変更後。それでも実行できないようなエラーがあった場合は、私の質問をアップデートで編集しました。 – Deanna

関連する問題