wcf 动态调用
按照论坛上的达人们的代码
public static object ExecuteMethod(string pUrl, string pMethodName, params object[] pParams)
{
string serviceWsdlUri = pUrl;
DynamicProxyFactory factory = new DynamicProxyFactory(serviceWsdlUri);
List<object> myEndpoints = new List<object>();
foreach (ServiceEndpoint endpoint in factory.Endpoints)
{
myEndpoints.Add(endpoint.Contract.Name);
}
foreach (string endpoint in myEndpoints)
{
DynamicProxy dp = factory.CreateProxy(endpoint);
OperationDescriptionCollection operations = factory.GetEndpoint(endpoint).Contract.Operations;
Type proxyType = dp.ProxyType;
MethodInfo[] mi = proxyType.GetMethods(BindingFlags.Public | BindingFlags.Instance);
for (int i = 0; i < mi.Length; i++)
{
string name = mi[i].Name;
if (name == pMethodName)
{
DynamicProxy proxy = factory.CreateProxy(endpoint);
return proxy.CallMethod(pMethodName, pParams);
}
}
dp.Close();
}
return null;
}
我的调用代码是: this.label1.Text = ExecuteMethod("http://localhost:1990/?wsdl", "GetData", new object[]{"1"}).ToString();
http://localhost:1990/?wsdl 这个地址是有数据的.
可是为什么它总要报 未找到方法“Service1Client.GetData”
哪些地方还用的注意?请各位达人看看了.. --------------------编程问答-------------------- 代码中return proxy.CallMethod(pMethodName, pParams);
pParams写成 你要调入的参数:例如我传int型..
前面申明:int a=1;
return proxy.CallMethod(pMethodName, a);
就可以了..
找了好半天才明白..
--------------------编程问答--------------------
学习了?传参不一样需要int对吧? --------------------编程问答-------------------- 动态调用
补充:.NET技术 , ASP.NET