Веб-сервис не подходит для отправки произвольного файла. Это можно сделать, но если это ваша единственная причина для создания веб-службы, вы можете просто придерживаться HTTP.
Если файл имеет определенный формат или конкретное содержимое , то вы можете создать для этого веб-сервис. Цель веб-службы ASMX или WCF - обеспечить возможность обнаружения и строгую типизацию данных (помимо прочего, но сейчас я придерживаюсь основ). С точки зрения клиента, вместо того, чтобы пытаться создать некрасивый блоб XML или CSV и преобразовать его через HTTP, вы используете реальный прокси-сервер службы с классами POCO:
MyService service = new MyService();
MyData data = new MyData() { ID = 3, Name = "Test", Date = DateTime.Now };
service.Save(data);
Visual Studio (и эквивалентные инструменты на Java и некоторых других платформах) позаботятся о создании прокси-сервера для вас, поэтому на самом деле все, что вам нужно сделать, это написать приведенный выше код.
Но если вы просто пытаетесь отправить любые данные, это никуда вас не приведет, потому что вы не можете сгенерировать прокси для необработанного XML. Ну, вы можете, но это будет просто XmlDocument
, и это ничего не даст с точки зрения удобства использования, безопасности типов или обнаружения.
Не смущайтесь "XML" в "XML Web Service". Это не инструмент для отправки ванильного XML. Скорее, XML относится к формату сообщения, так как оно передается по сети, в отличие от POST
строки (id=3&name=Test&date=2010-01-24
) или двоичного вызова RPC, используемого в .NET Remoting.
С точки зрения аутентификации, если вы решили использовать WCF, вам просто нужно использовать правильную привязку. Прокси-сервер WCF обычно по умолчанию настроен на использование wsHttpBinding
, который использует встроенную проверку подлинности Windows для защиты сообщений. Опять же, при условии, что вы используете Visual Studio, все это делается для вас автоматически, если вы не решите изменить значения по умолчанию.