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