Я не уверен, что все HTTP прокси работают одинаково, но мне удалось обмануть наш, просто создав HTTP-запрос на доступ к ресурсу по URI ftp: // user: pass@your.server. ком / путь .
К сожалению, для создания экземпляра HttpWebRequest вы должны использовать WebRequest.Create. И если вы сделаете это, вы не сможете создать HTTP-запрос для схемы ftp: //.
Итак, я использовал немного размышлений, чтобы вызвать непубличный конструктор, который делает это:
var ctor = typeof(HttpWebRequest).GetConstructor(
BindingFlags.NonPublic | BindingFlags.Instance,
null,
new Type[] { typeof(Uri), typeof(ServicePoint) },
null);
var req = (WebRequest)ctor.Invoke(new object[] { new Uri("ftp://user:pass@host/test.txt"), null });
req.Proxy = new WebProxy("myproxy", 8080);
req.Method = WebRequestMethods.Http.Put;
using (var inStream = req.GetRequestStream())
{
var buffer = Encoding.ASCII.GetBytes("test upload");
inStream.Write(buffer, 0, buffer.Length);
}
using (req.GetResponse())
{
}
Вы также можете использовать другие методы, такие как «УДАЛИТЬ» для других задач.
В моем случае это сработало как шарм.