C# 调用webservice 调用的目标发生 异常

xiaoben9 2016-04-11 11:26:45
大家好!我是一名学生,今天在写一个 用C#调用webservice的程序的时候,出现这样一个错误:“调用的目标发生异常。”

查阅了很多资料以后都不能解决问题,因为我的写的程序是要在一台没有安装 VS 的机器上运行的。

下面是我的代码,查看日志以后会发现,该函数的前部分的语句都有执行到,就是到了最后一句:
 object item = method.Invoke(o, _params); 
的时候没有执行,而且会报错!希望大家帮忙看一下,不慎感激
//内网 动态调用 webservice 函数
public static object InvokeWebMethod2(string _url, string _methodName,
params object[] _params)
{
WriteLog("开始执行 动态调用 webservice 函数...........", "");

WebClient client = new WebClient();
//String url = "http://localhost:3182/Service1.asmx?WSDL";//这个地址可以写在Config文件里面
Stream stream = client.OpenRead(_url);
ServiceDescription description = ServiceDescription.Read(stream);

ServiceDescriptionImporter importer = new ServiceDescriptionImporter();//创建客户端代理代理类。
importer.ProtocolName = "Soap"; //指定访问协议。
importer.Style = ServiceDescriptionImportStyle.Client; //生成客户端代理。
importer.CodeGenerationOptions = CodeGenerationOptions.GenerateProperties |
CodeGenerationOptions.GenerateNewAsync;
importer.AddServiceDescription(description, null, null); //添加WSDL文档。
CodeNamespace nmspace = new CodeNamespace(); //命名空间
nmspace.Name = "JetSun"; //这个命名空间可以自己取
CodeCompileUnit unit = new CodeCompileUnit();
unit.Namespaces.Add(nmspace);
ServiceDescriptionImportWarnings warning = importer.Import(nmspace, unit);
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CompilerParameters parameter = new CompilerParameters();
parameter.GenerateExecutable = false;
parameter.OutputAssembly = "MyTest.dll";//输出程序集的名称
WriteLog("MyTest.dll 文件生成成功!下一步加载其他必要动态库文件!", "");

parameter.ReferencedAssemblies.Add("System.dll");
parameter.ReferencedAssemblies.Add("System.XML.dll");
parameter.ReferencedAssemblies.Add("System.Web.Services.dll");
parameter.ReferencedAssemblies.Add("System.Data.dll");
CompilerResults result = provider.CompileAssemblyFromDom(parameter, unit);
if (result.Errors.HasErrors)
{
// 显示编译错误信息
}
Assembly asm = Assembly.LoadFrom("MyTest.dll");//加载前面生成的程序集
WriteLog("MyTest.dll 文件加载成功!下一步引用服务端的服务说明", "");

//Type t = asm.GetType("yzb.WeatherWS"); //前面的命名空间.类名,类必须是webservice中定义的
Type t = asm.GetType("JetSun.EventBusSvc");//查询省份的 webservice

WriteLog("MyTest.dll 文件加载成功!下一步调用服务端函数..........内网", "");

//Type t = asm.GetType("JetSun.Iniuservice");
object o = Activator.CreateInstance(t);
MethodInfo method = t.GetMethod(_methodName);//GetPersons是服务端的方法名称,你想调用服务端的什么方法都可以在这里改,最好封装一下
WriteLog("获取服务端函数成功!下一步调用服务端函数..........内网", "");

/*.---------------------------------------------------------------------------------------------------------------------------
一直到这里,都是正常执行的
*/


//下面这条语句就执行不到, 错误类型是 : “调用的目标发生了异常”
object item = method.Invoke(o, _params); //注:method.Invoke(o, null)返回的是一个Object,如果你服务端返回的是DataSet,这里也是用(DataSet)method.Invoke(o, null)转一下就行了
WriteLog("动态调用 webservice 函数执行完.........", "");
WriteLog("服务端函数调用成功!.........................内网", "");
return item;
}

...全文
1076 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyu_yu 2018-05-29
  • 打赏
  • 举报
回复
调用目标异常 .Invoke(obj, args); 这个怎么解决的
牧原 2017-07-21
  • 打赏
  • 举报
回复
https://zhidao.baidu.com/question/138891091.html 你试试给inetsrv文件夹的user用户添加“完全控制”权限
韩俊俊 2016-04-11
  • 打赏
  • 举报
回复
同求啊 我也遇到这个问题。
为轮子而生 2016-04-11
  • 打赏
  • 举报
回复
调用的目标发生异常,一般是服务器程序出错,可调试一下

111,086

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧