我是開發Web服務和客戶端服務器應用程序的新手,我在理解如何從c#web服務生成WSDL文件時遇到麻煩。 我需要WSDL文件才能生成代理類並將其引用到通信客戶端。如何從Remoting服務器生成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;
}
}
}
顯然,服務器的創建,直到它停止巋然不動......然而,隨着風暴(http://storm.codeplex.com/)進行測試時,它:通過添加http://localhost:3000/myserviceuri
失敗......怎麼回事我可以檢查服務的工作原理,沒有實施客戶?我怎樣才能從這個服務器生成WSDL文件? 我試圖使用http://wsdlgenerator.codeplex.com/,但顯然它只適用於WCF服務...
服務是否是.asmx Web服務? –
@Alex Mendez它應該是一個遠程API ..使用System.Remoting .. – agatha
所以你不能期望得到一個WSDL,如果它不是一個Web服務。 – Seb