1

私が作成した VB.NET からサービス スタック API を呼び出しています。これは基本的に、人の国籍を渡すときに話される既定の言語を検索します。

Dim response As BindingList(Of
Symphony_SystemFunctionsDefaultLanguageResponse)

Dim client As New JsonServiceClient(BASEURI)
    response = client.[Get](New Symphony_SystemFunctionsDefaultLanguage() With {.NationalityCode = strNationality}) 

strNationality は、"ME/Kuw" (アラビア語を返すクウェート) というデータベースのコードです。

「/」または「\」を含まないコードは正しく返されるため、コードを使用するとサービスと呼び出しが機能することがわかります。"ME/Kuw" サービスが見つかりません - / をルートとして解釈するようなもので、文字列 URLencoded を作成しようとしましたが、同じ問題です。

これは私のサービスと応答コードです。これは、.NationalityCode に「/」が含まれていない限り正常に機能します。

 <Route("/SystemFunctions/DefaultLanguage/{NationalityCode}", "GET")>
 Public Class Symphony_SystemFunctionsDefaultLanguage
     Implements IReturn(Of BindingList(Of ymphony_SystemFunctionsDefaultLanguageResponse))

Private mvarNationalityCode As String
     Public Property NationalityCode() As String
         Get

             NationalityCode = mvarNationalityCode

         End Get
         Set(ByVal Value As String)

             mvarNationalityCode = Value

         End Set
     End Property 
End Class


 Public Class Symphony_SystemFunctionsDefaultLanguageResponse
     Private mvarDefaultLanguage As String

     Public Property DefaultLanguage() As String
         Get

             DefaultLanguage = mvarDefaultLanguage

         End Get
         Set(ByVal Value As String)

             mvarDefaultLanguage = Value

         End Set
     End Property 
End Class

そしてデータを取得する私のクラス。

public Class Symphony_SystemFunctionsService
    Inherits Service Public Function [get](request As Symphony_SystemFunctionsDefaultLanguage) As Object

        Using dbcontext As New EntitiesModel1

            Dim sqlQueryString As String = "proc_s_GetDefaultLanguage '" & request.NationalityCode & "'"
            Dim response As IEnumerable(Of Symphony_SystemFunctionsDefaultLanguageResponse) =
 dbcontext.ExecuteQuery(Of
 Symphony_SystemFunctionsDefaultLanguageResponse)(sqlQueryString)

            Return response

        End Using

    End Function 
End Class

これをどのように呼び出し、そのデータで「/」を渡すことを許可するかについての提案はありますか?

4

1 に答える 1

1

Route 属性でワイルドカード パスを使用できると思います。

'        Added an asterisk here------------------------> v
<Route("/SystemFunctions/DefaultLanguage/{NationalityCode*}", "GET")>

これにより、NationalityCodeプロパティがスラッシュで値を取得できるようになります。

于 2013-08-17T19:42:49.307 に答える