Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用ASMX WebService传递并获取对象_C#_.net_Wcf_Web Services_Visual Studio 2005 - Fatal编程技术网

C# 使用ASMX WebService传递并获取对象

C# 使用ASMX WebService传递并获取对象,c#,.net,wcf,web-services,visual-studio-2005,C#,.net,Wcf,Web Services,Visual Studio 2005,我们有这样一个web服务: [WebMethod(EnableSession = true)] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public object[] DoSmt(object[] inParams) { List<object> rsl = new List<object>(); rsl.Add(DateTime.Now); rsl.Add(new CallResu

我们有这样一个web服务:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public object[] DoSmt(object[] inParams)
{
    List<object> rsl = new List<object>();
    rsl.Add(DateTime.Now);
    rsl.Add(new CallResult());
    return rsl.ToArray();
}
我们得到一个例外,他说

应用程序不知道如何反序列化CallResult

但是如果我们在web服务中加入这样一个有趣的功能:

Service svc = new Service();
object[] arrRsl = svc.DoSmt(new object[] { "hi there", "hello" });
[WebMethod(EnableSession = true)]
public void Fun(CallResult abc)
{
    // Do nothing
}
那么一切都好了。这是因为在添加趣味函数之前,
CallResult
不会出现在WSDL文件中,因为它不会出现在任何
WebMethod

问题是:如何通知C#在WSDL文件中生成
CallResult
,即使它没有明确用于任何
WebMethod
。我们使用VS2005。


谢谢。

你可以在课堂上用

在某些情况下,即使类型对应于输入参数或 如果返回Web服务方法的值,则不会生成代理 自动地在这种情况下,您必须使用 GenerateScriptTypeAttribute属性为其生成代理对象 类型


在.NET2.0中,只需添加[xmlclude(typeof(CallResult))]
[GenerateScriptType(typeof(ColorObject), ScriptTypeId = "Color")]
[WebMethod]
public string[] GetDefaultColor()
{
    // Instantiate the default color object.
    ColorObject co = new ColorObject();

    return co.rgb;
}