如何从Remoting服务器生成WSDL文件?

时间:2011-10-27 12:47:13

标签: c# .net client-server remoting

我是开发Web服务和客户端服务器应用程序的新手,我在理解如何从c #Web服务生成WSDL文件时遇到了麻烦。 我需要WSDL文件才能生成代理类并将其引用到通信客户端。

class my_server
{
    private static HttpChannel channel;
    private static int port = 3000;
    private static string serverUri = "myservice";

    static void Main(string[] args)
    {

        Console.WriteLine("Sample server");
        StartSoapServer(port);
        Console.ReadLine();

        StopSoapServer();
    }
    private static bool Start(int p)
    {
        try
        {
            port = p;
            channel = new HttpChannel(port);
            ChannelServices.RegisterChannel(channel, false);
             RemotingConfiguration.CustomErrorsMode = CustomErrorsModes.Off;
            RemotingConfiguration.RegisterWellKnownServiceType(typeof(server), serverUri, WellKnownObjectMode.Singleton);
            IServerChannelSink sinkChain = channel.ChannelSinkChain;

            Console.WriteLine("server created");
        }
        catch (Exception e)
        {

            return false;
        }
        return true;
    }

    private static void Stop()
    {
        string[] urls = channel.GetUrlsForUri(serverUri);
        if (urls.Length > 0)
        {
            string objectUrl = urls[0];
            string objectUri;
            string channelUri = channel.Parse(objectUrl, out objectUri);
            ChannelServices.UnregisterChannel(channel);
            Console.WriteLine("Server stopped");
        }
    }

    public class server : MarshalByRefObject
    {
        public server()
        { 
        }

        public override object InitializeLifetimeService()
        {
            return null;
        }
        public bool initialise()
        {
            Console.WriteLine("initialise()");
            return true;
        }
        public bool ping()
        {
            Console.WriteLine("ping");
            return true;
        }   
    }
}

显然服务器已经创建,并一直运行直到它停止...但是当使用Storm(http://storm.codeplex.com/)进行测试时:通过添加http://localhost:3000/myserviceuri它失败了...我还能怎样检查服务工作,没有实现客户端?如何从此服务器生成WSDL文件? 我曾尝试使用http://wsdlgenerator.codeplex.com/,但显然它只适用于WCF服务......

3 个答案:

答案 0 :(得分:1)

就我而言,您可以使用wsdl.exe为wsdl创建wsdl,以获取.net中的.svc.asmx服务。对于远程处理,这是microsoft所说的“Remoting对象可以提供描述对象及其方法的WSDL(参见Web服务描述语言(WSDL)1.1)文件。任何可以读取的对象和生成与WSDL文件相对应的SOAP请求可以调用此对象并使用SOAP与其进行通信..NET Remoting Server对象可以使用.NET SDK附带的SOAPSUDS.EXE工具生成可用作元数据的WSDL文件。当组织想要提供任何客户端可以访问和使用的公共服务时,这非常有用。“

答案 1 :(得分:1)

您正在使用.NET Remoting,它早已被弃用以支持WCF。所有新的Web服务和客户端开发都应该使用WCF。

答案 2 :(得分:0)

您正在启动远程服务器而不是Web服务。这可能是你的观点。 Alex Mendez指出,你的项目输出应该是.asmx。你有没有关注这个procedure