2

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

Web服务中的实现:

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

    public string StrKey
    {
        get {  return strKey; }

        set { strKey = value; }    
    }
}

肥皂扩展类:

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 Extension 属性,在我使用 Soap Extension 之前,当我调用一些 web 方法时。

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

4

1 回答 1

2

首先,如果您可以为此使用 WCF,那么您应该这样做。微软表示 ASMX Web 服务是“遗留技术”,所有新的 Web 服务开发都应该使用 WCF。

在任何情况下,请参阅SoapExtensionReflectorSoapExtensionImporter类。请注意,这些仅适用于 .NET、ASMX 客户端。

于 2009-09-09T09:50:14.320 回答