动态更改属性的属性

时间:2011-12-14 12:53:26

标签: .net soap attributes

我正在访问一个Web服务,该服务提供了一种方法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 :(得分:0)

好的,我找到了一个解决方法,但它并不完全理想。基本上,我们设置此属性以填充SOAPAction标头。但是我们决定直接更改SOAPAction标题,而不是通过属性。更简单但肯定是一种黑客方法。