Можно ли с помощью 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 можно прочитать в следующих статьях: Создание виртуальной сети и Создание виртуальной сети для межкомпонентного подключения.

Другие вопросы по тегам