클라우드 서비스에서 VM의 공유 폴더로 파일 저장
4016 단어 Azure
하고 싶은 일
클라우드 서비스로 가상 머신의 공유 폴더를 불러와서 고객으로부터 업로드된 파일을 저장하고 싶습니다!!
※ Azure Files를 사용하면 공유 폴더를 쉽게 사용할 수 있습니다.
자세한 내용은 Persisting connections to Microsoft Azure Files 를 참조하십시오.
가상 네트워크 준비
다음과 같이 가상 네트워크를 준비합니다.
가상 머신 만들기
가상 머신을 만들고 공유 폴더를 설정합니다.
※ 내부 IP 주소를 미리 고정하십시오.
이번에는 10.0.0.4 고정 VM을 사용합니다.
WebRole.cs
WebRole.cs는 아래와 같다.
구성된 Z 드라이브에 파일을 저장할 응용 프로그램을 만들면 됩니다.
WebRole.csUsing System.Runtime.InteropServices;
namespace MvcWebRole1
{
public class WebRole : RoleEntryPoint
{
[DllImport("Mpr.dll",
EntryPoint = "WNetAddConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetAddConnection2(NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
System.UInt32 dwFlags);
[DllImport("Mpr.dll",
EntryPoint = "WNetCancelConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetCancelConnection2(string lpName,
System.UInt32 dwFlags,
System.Boolean fForce);
[StructLayout(LayoutKind.Sequential)]
private class NETRESOURCE
{
public int dwScope;
public ResourceType dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
};
public enum ResourceType
{
RESOURCETYPE_DISK = 1,
};
public static void MountShare(string shareName,
string driveLetterAndColon,
string username,
string password)
{
if (!String.IsNullOrEmpty(driveLetterAndColon))
{
// Make sure we aren't using this driveLetter for another mapping
WNetCancelConnection2(driveLetterAndColon, 0, true);
}
NETRESOURCE nr = new NETRESOURCE();
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.lpRemoteName = shareName;
nr.lpLocalName = driveLetterAndColon;
int result = WNetAddConnection2(nr, password, username, 0);
if (result != 0)
{
throw new Exception("WNetAddConnection2 failed with error " + result);
}
}
public override bool OnStart()
{
MountShare("\\10.0.0.4\my-share",
"z:",
"<ユーザー名>",
"<パスワード>");
return base.OnStart();
}
}
}
주의사항
기술적으로는 상기 방법을 통해 가상 머신의 공유 폴더를 불러올 수 있지만 몇 가지 주의사항이 있다.
・ SLA 객체에 속하지 않는 가상 메커니즘이 반드시 필요합니다.
• 하드웨어 장애 또는 정기 유지 보수로 인해 Azure 가상 머신이 재부팅될 수 있음
Reference
이 문제에 관하여(클라우드 서비스에서 VM의 공유 폴더로 파일 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuiashikaga/items/c538167ca6ce3faa3dd4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
다음과 같이 가상 네트워크를 준비합니다.
가상 머신 만들기
가상 머신을 만들고 공유 폴더를 설정합니다.
※ 내부 IP 주소를 미리 고정하십시오.
이번에는 10.0.0.4 고정 VM을 사용합니다.
WebRole.cs
WebRole.cs는 아래와 같다.
구성된 Z 드라이브에 파일을 저장할 응용 프로그램을 만들면 됩니다.
WebRole.csUsing System.Runtime.InteropServices;
namespace MvcWebRole1
{
public class WebRole : RoleEntryPoint
{
[DllImport("Mpr.dll",
EntryPoint = "WNetAddConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetAddConnection2(NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
System.UInt32 dwFlags);
[DllImport("Mpr.dll",
EntryPoint = "WNetCancelConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetCancelConnection2(string lpName,
System.UInt32 dwFlags,
System.Boolean fForce);
[StructLayout(LayoutKind.Sequential)]
private class NETRESOURCE
{
public int dwScope;
public ResourceType dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
};
public enum ResourceType
{
RESOURCETYPE_DISK = 1,
};
public static void MountShare(string shareName,
string driveLetterAndColon,
string username,
string password)
{
if (!String.IsNullOrEmpty(driveLetterAndColon))
{
// Make sure we aren't using this driveLetter for another mapping
WNetCancelConnection2(driveLetterAndColon, 0, true);
}
NETRESOURCE nr = new NETRESOURCE();
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.lpRemoteName = shareName;
nr.lpLocalName = driveLetterAndColon;
int result = WNetAddConnection2(nr, password, username, 0);
if (result != 0)
{
throw new Exception("WNetAddConnection2 failed with error " + result);
}
}
public override bool OnStart()
{
MountShare("\\10.0.0.4\my-share",
"z:",
"<ユーザー名>",
"<パスワード>");
return base.OnStart();
}
}
}
주의사항
기술적으로는 상기 방법을 통해 가상 머신의 공유 폴더를 불러올 수 있지만 몇 가지 주의사항이 있다.
・ SLA 객체에 속하지 않는 가상 메커니즘이 반드시 필요합니다.
• 하드웨어 장애 또는 정기 유지 보수로 인해 Azure 가상 머신이 재부팅될 수 있음
Reference
이 문제에 관하여(클라우드 서비스에서 VM의 공유 폴더로 파일 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuiashikaga/items/c538167ca6ce3faa3dd4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
WebRole.cs는 아래와 같다.
구성된 Z 드라이브에 파일을 저장할 응용 프로그램을 만들면 됩니다.
WebRole.cs
Using System.Runtime.InteropServices;
namespace MvcWebRole1
{
public class WebRole : RoleEntryPoint
{
[DllImport("Mpr.dll",
EntryPoint = "WNetAddConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetAddConnection2(NETRESOURCE lpNetResource,
string lpPassword,
string lpUsername,
System.UInt32 dwFlags);
[DllImport("Mpr.dll",
EntryPoint = "WNetCancelConnection2",
CallingConvention = CallingConvention.Winapi)]
private static extern int WNetCancelConnection2(string lpName,
System.UInt32 dwFlags,
System.Boolean fForce);
[StructLayout(LayoutKind.Sequential)]
private class NETRESOURCE
{
public int dwScope;
public ResourceType dwType;
public int dwDisplayType;
public int dwUsage;
public string lpLocalName;
public string lpRemoteName;
public string lpComment;
public string lpProvider;
};
public enum ResourceType
{
RESOURCETYPE_DISK = 1,
};
public static void MountShare(string shareName,
string driveLetterAndColon,
string username,
string password)
{
if (!String.IsNullOrEmpty(driveLetterAndColon))
{
// Make sure we aren't using this driveLetter for another mapping
WNetCancelConnection2(driveLetterAndColon, 0, true);
}
NETRESOURCE nr = new NETRESOURCE();
nr.dwType = ResourceType.RESOURCETYPE_DISK;
nr.lpRemoteName = shareName;
nr.lpLocalName = driveLetterAndColon;
int result = WNetAddConnection2(nr, password, username, 0);
if (result != 0)
{
throw new Exception("WNetAddConnection2 failed with error " + result);
}
}
public override bool OnStart()
{
MountShare("\\10.0.0.4\my-share",
"z:",
"<ユーザー名>",
"<パスワード>");
return base.OnStart();
}
}
}
주의사항
기술적으로는 상기 방법을 통해 가상 머신의 공유 폴더를 불러올 수 있지만 몇 가지 주의사항이 있다.
・ SLA 객체에 속하지 않는 가상 메커니즘이 반드시 필요합니다.
• 하드웨어 장애 또는 정기 유지 보수로 인해 Azure 가상 머신이 재부팅될 수 있음
Reference
이 문제에 관하여(클라우드 서비스에서 VM의 공유 폴더로 파일 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yuiashikaga/items/c538167ca6ce3faa3dd4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(클라우드 서비스에서 VM의 공유 폴더로 파일 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuiashikaga/items/c538167ca6ce3faa3dd4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)