ASP.NET MVC에서 Azure 저장 테이블 작성
-
13-09-2019 - |
문제
이 블로그 게시물을 팔로우하여 Azure Storage Table을 만듭니다.http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx
ASP.NET WebForm Web_Role에서 잘 작동합니다.
ASP.NET MVC를 웹 역할로 사용하여 동일한 프로젝트를 다시 만들었으며 애플리케이션 시작시 항상 실패합니다. 이 라인 :
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
항상 계정 공유 키를 얻지 못하는 것 같습니다.
Global ASAX 응용 프로그램에서 기본값으로 라인을 이동하면 완벽하게 잘 작동합니다.
이것은 이벤트 뷰어의 오류 호출 스택입니다
Exception information: Exception type: HttpException Exception message: No account key specified! Request information: Request URL: http://127.0.0.1:5100/do.__rd_runtime_init__?shutdownEvent=1B671B93FD-4153-4834-9D5D-595EFC6C19EE1D Request path: /do.__rd_runtime_init__ User host address: 127.0.0.1 User: Is authenticated: False Authentication Type: Thread account name: ***** Thread information: Thread ID: 6 Thread account name: ***** Is impersonating: False Stack trace: at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) at System.Web.HttpApplicationFactory.GetPipelineApplicationInstance(IntPtr appContext, HttpContext context) at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
해결책
"비고"를 확인하십시오 http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx:
Windows Azure Fabric은 IIS 7.0을 통합 모드로 실행합니다. 통합 모드에서 Application_Start 이벤트는 요청 컨텍스트 또는 Windows Azure SDK 런타임 API가 제공하는 RoleManager 클래스의 멤버에 대한 액세스를 지원하지 않습니다. Application_Start 이벤트에서 요청 컨텍스트에 액세스하거나 RoleManager 클래스의 호출 메소드를 호출하는 ASP.NET 응용 프로그램을 작성하는 경우 Application_BeginRequest 이벤트에서 초기화하도록 수정해야합니다.
Application_beginRequest 이벤트 사용 방법을 보여주는 예는 Windows Azure SDK와 함께 제공되는 PersonalWebsite 샘플을 참조하십시오.
다른 팁
사용하는 경우 :
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
일반적으로 계정 정보는 web.conf 파일에 나와 있습니다.
<add key="TableStorageEndpoint" value="http://127.0.0.1:10002/devstoreaccount1" />
<add key="AccountName" value="devstoreaccount1" />
<add key="AccountSharedKey" value="YOUR ACCOUNT KEY PROVIDED BY AZURE"/>