我的客户端需要将Url传递给我的WSDL Web服务。他们使用SoapHttpClientProtocol Url属性来设置它的值。示例我的客户端传递url值“http://www.contoso.com/math.asmx”:
namespace MyMath {
using System.Diagnostics;
using System.Xml.Serialization;
using System;
using System.Web.Services.Protocols;
using System.Web.Services;
[System.Web.Services.WebServiceBindingAttribute(Name="MyMathSoap", Namespace="http://www.contoso.com/")]
public class MyMath : System.Web.Services.Protocols.SoapHttpClientProtocol {
[System.Diagnostics.DebuggerStepThroughAttribute()]
public MyMath() {
this.Url = "http://www.contoso.com/math.asmx";
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://www.contoso.com/Add", RequestNamespace="http://www.contoso.com/", ResponseNamespace="http://www.contoso.com/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int Add(int num1, int num2) {
object[] results = this.Invoke("Add", new object[] {num1,
num2});
return ((int)(results[0]));
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
public System.IAsyncResult BeginAdd(int num1, int num2, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("Add", new object[] {num1,
num2}, callback, asyncState);
}
[System.Diagnostics.DebuggerStepThroughAttribute()]
public int EndAdd(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((int)(results[0]));
}
}
}
但是,我需要检查传递给web方法中soapClient.Url的值。 示例Web服务:
<%@ WebService Language="C#" Class="MyMath"%>
using System.Web.Services;
using System;
[WebService(Namespace="http://www.contoso.com/")]
public class MyMath {
[ WebMethod ]
public int Add(int num1, int num2) {
//need to place logic to check the url pass by clients.
//if (url) place a logic here
//how do i check the SoapHttpClientProtocol url property?
return num1+num2;
}
}
如何在我的网络服务方法中访问我的客户设置的这些SoapHttpClientProtocol Url属性值?
任何人请建议。
答案 0 :(得分:0)
使用SoapHttpClientProtocol
对象的属性来创建从客户端到服务的连接。这些属性包括URL,网络凭据和其他与连接相关的信息。
这些都不会发送到服务。它只是使用。
现在,我不知道为什么你需要这些信息。如果你确实需要它,那么你应该将它发送到SOAP Header中,并使其成为服务合同的一部分。
或者,您可以使用WCF。它实现了WS-Addressing,它在SOAP Envelope中传递了这些信息。