我尝试在客户端设置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扩展属性。有人可以帮帮我吗?
答案 0 :(得分:2)
首先,如果您可以使用WCF,那么您应该这样做。微软已经声明ASMX Web服务是“遗留技术”,并且所有新的Web服务开发都应该使用WCF。
无论如何,请参阅SoapExtensionReflector和SoapExtensionImporter课程。请注意,这些仅适用于.NET,ASMX客户端。