AzureConnectを試しています。ワーカーロールからオンプレミスサーバーにいくつかのファイルをプッシュできるようにしたい。また、いくつかのバッチジョブのためにいくつかのネットワークプリンターに印刷したいと思います。私が読んだことから、それは可能であると思われます。私は基本についてこのチュートリアルをフォローしてきましたが、これら2つのユースケースに固有のチュートリアルや投稿へのポインタが欲しいです。
また、AzureConnectがプレビュー/CTPから外れ、公開されるかどうか、またいつ公開されるかを誰かが知っているかどうかも知りたいです。
ありがとう
更新 これは、ダミーファイルを生成し、MVCWebロールからオンプレミスにコピーするためにPOCとして使用したコードです。最初にパスでエラーが発生しました(エラー: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();
}
}
}