【问题标题】:How can I generate the WSDL file from a Remoting server?如何从 Remoting 服务器生成 WSDL 文件?
【发布时间】:2011-10-27 12:47:12
【问题描述】:

我是开发 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 服务...

【问题讨论】:

  • 该服务是 .asmx Web 服务吗?
  • @Alex Mendez 它应该是一个远程 API..使用 System.Remoting..
  • 因此,如果它不是 Web 服务,您就不能期望获得 wsdl。

标签: c# .net client-server remoting


【解决方案1】:

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

【讨论】:

  • 看起来这就是我要找的东西......我正在寻找错误的 wsdl 生成工具......谢谢
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 我遵循了一个已经工作的模板。有一些服务器遵循这个简单的模板和相关的客户端。这些客户端使用从 WSDL 生成的代理类作为参考......我在任何地方都找不到与此相关的任何东西......
    • 另一种方法是使用 System.Remoting 创建客户端..但我不会按照模板...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2011-03-11
    • 2014-02-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多