C# 如何从远程处理服务器生成WSDL文件?

C# 如何从远程处理服务器生成WSDL文件?,c#,.net,client-server,remoting,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(

我是开发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://localhost:3000/myserviceuri
它失败了……如果不实现客户端,我如何检查服务是否正常工作?如何从该服务器生成WSDL文件?
我尝试过使用,但显然它只用于WCF服务…

您启动的是远程处理服务器,而不是web服务。这可能是你的观点。正如Alex Mendez指出的,您的项目输出应该是
.asmx
。您遵守了吗?

就我而言,您可以使用wsdl.exe为.net中的
.svc
.asmx
服务生成wsdl。对于远程处理,这说明“远程处理对象可以提供WSDL(请参阅Web服务描述语言(WSDL)1.1)描述对象及其方法的文件。任何可以读取和生成与WSDL文件对应的SOAP请求的客户端都可以调用此对象并使用SOAP与之通信。.NET远程处理服务器对象可以使用.NET SDK附带的SOAPSUDS.EXE工具生成可作为元数据的WSDL文件。这在以下情况下非常有用:n一个组织希望提供任何客户端都可以访问和使用的公共服务。”

您使用的是.NET远程处理,而WCF早就被弃用了。所有新的web服务和客户端开发都应该使用WCF。

该服务是一个.asmx web服务吗?@Alex Mendez它应该是一个远程API。使用System.remoting。因此,如果它不是web服务,您就不能期望得到wsdl。我遵循的是一个已经在工作的模板。有一些服务器遵循这个简单的模板和关联的客户端。这些客户端使用从WSDL生成的代理类作为引用…我在任何地方都找不到与此相关的任何内容..另一种方法是使用System.Remoting创建客户端..但我不会遵循模板…看起来这就是我要找的…我要找的WSDL生成工具不正确..谢谢