Можно ли с помощью Azure Connect получить доступ к локальным общим папкам и принтерам из рабочих ролей?
Я экспериментирую с Azure Connect. Я хочу иметь возможность передавать некоторые файлы на локальный сервер из рабочей роли. Я также хотел бы распечатать на некоторых сетевых принтерах для некоторых пакетных заданий. Из того, что я прочитал, я думаю, что это возможно. Я следил за этим учебником по основам, но хотел бы, чтобы ссылки на любые учебные пособия или посты, специфичные для этих двух вариантов использования.
Мне также любопытно, если кто-нибудь знает, когда и когда Azure Connect выйдет из режима предварительного просмотра /CTP и станет общедоступным.
Спасибо
ОБНОВЛЕНИЕ Вот код, который я использовал в качестве POC для генерации фиктивного файла и копирования его на мое место из веб-роли MVC. Первоначально я получил сообщение об ошибке с путем (Ошибка: System.IO.IOException: сетевой путь не был найден.), Которое я исправил, не используя полное имя моего предварительного окна, но вместо этого короткое имя и добавление правила брандмауэра, описанного в этом посте.
public class TestController : Controller
{
public ActionResult SaveFile()
{
return View();
}
[DllImport("advapi32.dll", SetLastError = true)]
public static extern bool LogonUser(
string lpszUsername,
string lpszDomain,
string lpszPassword,
int dwLogonType,
int dwLogonProvider,
out IntPtr phToken
);
[HttpPost]
public ActionResult SaveFile(FormCollection collection)
{
try
{
string nowString = DateTime.UtcNow.ToString("yyyyMMdd HHmmss");
string path = @"\\fullyqualifiedservername\e$\FileShare\";
path = Path.Combine(path, string.Format("{0}.txt", nowString));
IntPtr userHandle = IntPtr.Zero;
bool loggedOn = LogonUser("myusername", "mydomain", "mypassword", 9, 0, out userHandle);
if (loggedOn)
{
WindowsImpersonationContext context = WindowsIdentity.Impersonate(userHandle);
System.IO.FileInfo f = new FileInfo(path);
using (FileStream fs = f.OpenWrite())
{
byte[] b = System.Text.Encoding.Unicode.GetBytes(string.Format("Fake content written at {0}", nowString));
fs.Write(b, 0, b.Length);
}
context.Undo();
}
return RedirectToAction("SaveFile");
}
catch(Exception ex)
{
ViewBag.Error = ex.ToString();
return View();
}
}
}
1 ответ
Windows Azure Connect подходит для вашей ситуации. Однако это было Предварительным просмотром в течение довольно долгого времени (близко к 2 годам, если я правильно помню). Никто не может дать вам представление о том, станет ли / когда он станет GA (общая доступность).
Вы, конечно, можете экспериментировать и создавать PoC (Proof Of Concept). Это довольно легко использовать. Вам не нужно ничего больше, чем статья, на которую вы ссылаетесь. В Windows Azure Connect больше ничего нет.
Я бы, однако, не использовал его для производства, так как это Preview, и SLA не существует, и обслуживание может прекратиться в любой момент времени.
Другая альтернатива, которая, несомненно, имеет более светлое будущее, - это виртуальная сеть Windows Azure. Однако для этого требуется настоящий аппаратный маршрутизатор / межсетевой экран с поддержкой протоколов IPSEC. Самым дешевым поддерживаемым устройством является CISCO ASA 5505. Также вам нужно будет предоставить (управляемый на нашей стороне) полнофункциональный DNS-сервер. Подробнее о Windows Azure VN можно прочитать в следующих статьях: Создание виртуальной сети и Создание виртуальной сети для межкомпонентного подключения.