none
SilverLight访问WCF动态编译对象 RRS feed

  • 问题

  • 在做项目的过程中遇到了 SilverLight 和WCF的通讯问题
    wcf 的 方法中
    [OperationContract]
            public object Test()
            {
                StringBuilder cs = new StringBuilder();
                cs.AppendLine("namespace Runtime");
                cs.AppendLine("{");
                //cs.AppendLine("using System.Data;");
                cs.AppendLine("using System.Collections.Generic;");
                cs.AppendLine("using System.Reflection;");
                cs.AppendLine("using System.ComponentModel;");
                cs.AppendLine("using System.Runtime.Serialization;");
                cs.AppendLine("using System;");
                cs.AppendLine("[Serializable]");
       
                cs.AppendLine("public class TestData ");
                cs.AppendLine(" ");
                cs.AppendLine("{public int IDDD{get;set;}}}");
                CompilerParameters options = new CompilerParameters();
                CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
                options.ReferencedAssemblies.Add("system.dll");
                options.ReferencedAssemblies.Add("system.Runtime.Serialization.dll");
                Assembly assembly = Assembly.GetAssembly(base.GetType());
                options.ReferencedAssemblies.Add(assembly.Location);
                CompilerResults results = provider.CompileAssemblyFromSource(options, new string[] { cs.ToString() });
                if (results.Errors.HasErrors)
                {
                    throw new Exception(results.Errors[0].ErrorText);
                }
                object o = results.CompiledAssembly.CreateInstance("Runtime.TestData");
               

                return o;
            }
            // 在此处添加更多操作并使用 [OperationContract] 标记它们
        }

    在SilverLight访问该WCF的方法时,总是提示Not Found 方法。
    请问有其他方法可以实现类似方法吗?
    2010年1月15日 3:10

答案

  • 你好 ,
       
          Service not found,可以引起这个错误的 原因非常广泛。很难通过这个信息判断具体原因。 推荐你使用Fiddler这样的工具来监视request和response,在这里会包含更详细的错误信息。
      
         一些提示:先在server端,游览器中查看svc看看服务本身是否成功建立。
                        看看是不是被防火墙block了。
                       
    2010年1月18日 2:18

全部回复

  • 你好 ,
       
          Service not found,可以引起这个错误的 原因非常广泛。很难通过这个信息判断具体原因。 推荐你使用Fiddler这样的工具来监视request和response,在这里会包含更详细的错误信息。
      
         一些提示:先在server端,游览器中查看svc看看服务本身是否成功建立。
                        看看是不是被防火墙block了。
                       
    2010年1月18日 2:18
  • 您好,
         好像是由于 WCF 动态编译类对象的时候 引用的是 .Net Framework的 System.dll会造成上面的错误。
        如果引用的是 Silverlight 的System.dll动态编译,并将动态编译输出到Web路径下,SIlverlight 动态载入编译好的DLL文件,可实现一些类似功能。
        但带来的问题是:每次访问这个方法时都需要动态编译,在WEb路径下生成一个DLL文件,会造成垃圾文件多。
       请问 有其他方法可以实现类型的功能吗?
    2010年1月21日 8:06