Вы можете включить HTTP в web.config вашего веб-сервиса.
<webServices>
<protocols>
<add name="HttpGet"/>
</protocols>
</webServices>
Тогда вы сможете использовать веб-клиент для загрузки файла (проверено с помощью текстового файла):
string fileName = "bar.txt"
string url = "http://localhost/Foo.asmx/GetFile?filename="+fileName;
using(WebClient wc = new WebClient())
wc.DownloadFile(url, @"C:\bar.txt");
Редактировать:
Для поддержки настройки и получения файлов cookie вам необходимо написать собственный класс WebClient
, который переопределяет GetWebRequest()
, это легко сделать и всего несколько строк кода:
public class CookieMonsterWebClient : WebClient
{
public CookieContainer Cookies { get; set; }
protected override WebRequest GetWebRequest(Uri address)
{
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.CookieContainer = Cookies;
return request;
}
}
Чтобы использовать этот пользовательский веб-клиент, вы должны:
myCookieContainer = ... // your cookies
using(CookieMonsterWebClient wc = new CookieMonsterWebClient())
{
wc.Cookies = myCookieContainer; //yum yum
wc.DownloadFile(url, @"C:\bar.txt");
}