ASMX Web服务肥皂扩展 - 如何将属性注入客户端代理类?

时间:2009-09-09 09:38:33

标签: c# asmx soap-extension

我尝试在客户端设置soap扩展属性。例如:

在网络服务中实施:

[AttributeUsage(AttributeTargets.Method)]
public class EncryptMessageAttribute : SoapExtensionAttribute
{
    private string strKey="null";

    public string StrKey
    {
        get {  return strKey; }

        set { strKey = value; }    
    }
}

Soap扩展类:

public class EncryptMessage : SoapExtension
{
...
}

用于网络方法:

[WebMethod]
[EncryptMessage( StrKey = "pass")]
public string test2()
{
    return "ok";
}

代理类中的实现:

[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/test", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
[EncryptMessage( StrKey = "pass")]
public string test() {
    object[] results = this.Invoke("test", new object[0]);
    return ((string)(results[0]));
}

Soap扩展属性是:: [EncryptMessage( StrKey =“pass”)]

我想在客户端设置Soap扩展属性,之后我使用Soap Extension,当我调用一些Web方法时。

示例:我调用了一些方法,在使用soap扩展之前,两侧都设置了soap扩展属性。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:2)

首先,如果您可以使用WCF,那么您应该这样做。微软已经声明ASMX Web服务是“遗留技术”,并且所有新的Web服务开发都应该使用WCF。

无论如何,请参阅SoapExtensionReflectorSoapExtensionImporter课程。请注意,这些仅适用于.NET,ASMX客户端。