111,098
社区成员




static void Main(string[] args)
{
EndpointAddress mexAddress = new EndpointAddress("http://localhost:8889/FileTransfer/mex");
MetadataExchangeClient mexClient = new MetadataExchangeClient(mexAddress);
MetadataSet metadataSet = mexClient.GetMetadata();
WsdlImporter importer = new WsdlImporter(metadataSet);
ServiceEndpointCollection endpoints = importer.ImportAllEndpoints();
ChannelFactory<IFileDownloader> factory = new ChannelFactory<IFileDownloader>(
endpoints[0].Binding, endpoints[0].Address);
IFileDownloader downloader = factory.CreateChannel();
DownloadRequest request = new DownloadRequest("C:\\VIRTPART.DAT");
DownloadResponse response = downloader.Download(request);
Console.WriteLine(response.FileName);
Console.WriteLine(response.Size);
}
static void Main(string[] args)
{
ContractDescription cd = ContractDescription.GetContract(typeof(IFileDownloader));
BasicHttpBinding basicHttpBinding = new BasicHttpBinding();
basicHttpBinding.MaxReceivedMessageSize = 10067108864;
basicHttpBinding.TransferMode = TransferMode.Streamed;
basicHttpBinding.MessageEncoding = WSMessageEncoding.Mtom;
//WSHttpBinding basicHttpBinding = new WSHttpBinding();
ServiceEndpoint endpoint = new ServiceEndpoint(
cd,
basicHttpBinding,
new EndpointAddress("http://localhost:8889/FileTransfer/"));
ContractDescription mexCd = ContractDescription.GetContract(typeof(IMetadataExchange));
ServiceEndpoint mexEndpoint = new ServiceEndpoint(
mexCd,
MetadataExchangeBindings.CreateMexHttpBinding(),
new EndpointAddress("http://localhost:8889/FileTransfer/mex"));
System.ServiceModel.ServiceHost host = new System.ServiceModel.ServiceHost(typeof(FileTransferImpl));
host.Opened += (a, b) => Console.WriteLine("Service Opened.");
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.HttpGetUrl = new Uri("http://localhost:8889/FileTransfer/mex");
host.Description.Behaviors.Add(smb);
host.AddServiceEndpoint(endpoint.Contract.ContractType, endpoint.Binding, endpoint.Address.ToString());
host.AddServiceEndpoint(mexEndpoint.Contract.ContractType, mexEndpoint.Binding, mexEndpoint.Address.ToString());
host.Open();
foreach (ServiceEndpoint ep in host.Description.Endpoints)
{
Console.WriteLine(ep.Address.ToString());
}
Console.ReadLine();
}