Динамически изменяемые атрибуты для свойств - PullRequest
1 голос
/ 14 декабря 2011

Я обращаюсь к веб-сервису, который предоставляет один метод ProcessMessage этот метод выглядит следующим образом:

<System.Web.Services.Protocols.SoapHeaderAttribute("payloadManifest", Direction:=System.Web.Services.Protocols.SoapHeaderDirection.InOut), _
     System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest1" & _
        "", RequestNamespace:="http://exampleurl", ResponseNamespace:="http://exampleurl", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> _
Public Sub ProcessMessage(ByRef payload As Payload)
    Try
        Dim results() As Object = Me.Invoke("ProcessMessage", New Object() {payload})
        payload = CType(results(0), Payload)
        Dim i As Integer = 0
    Catch ex As Exception

    End Try
End Sub

Это прекрасно работает, однако, этот метод должен использоваться для различных функций. Если SoapDocumentMethodAttribute Action изменяется, ProcessMessage возвращает разные значения.

Пример:

Изменение

System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest1"

К

System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://exampleurl/operations/ProcessMessage/v1_01/GetTest2"

Теперь проблема в том, насколько я вижу, этот Action должен быть жестко запрограммирован в файле, и поэтому я могу запустить только 1 метод с каждой скомпилированной программой. Есть ли способ динамического изменения Action или я должен подходить к этому по-другому?

1 Ответ

0 голосов
/ 20 декабря 2011

Хорошо, я нашел обходной путь, но он не совсем идеален. По сути, мы устанавливали этот атрибут для заполнения заголовка SOAPAction. Но мы решили изменить заголовок SOAPAction напрямую, а не через атрибуты. Гораздо проще, но, несомненно, хакерский метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...