Создание таблицы хранения Azure на asp.net MVC - PullRequest
4 голосов
/ 13 июня 2009

Я слежу за этим сообщением в блоге, чтобы создать таблицу хранения Azure: http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx

Отлично работает на веб-форме asp.net.

Я заново создал тот же проект, используя asp.net mvc в качестве веб-роли, и он всегда терпел неудачу при запуске приложения. эта строка:

StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();

кажется, что всегда не удается получить общий ключ учетной записи.

Если я перенесу строку из глобального запуска asax-приложения в default.aspx, она прекрасно заработает.

Есть ли какая-либо разница в инициализации таблицы хранения в Azure Asp.net MVC по сравнению с веб-формой? Почему я не могу получить настройки приложений Azure при запуске приложения?
Это стек вызовов ошибок из средства просмотра событий
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)

Ответы [ 2 ]

2 голосов
/ 13 июня 2009

Проверьте "замечания" на http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx:

В структуре Windows Azure работает IIS 7.0 в интегрированном режиме. В интегрированном режим, событие Application_Start делает не поддерживает доступ к запросу контекст или членам Класс RoleManager, предоставляемый API среды выполнения Windows Azure SDK. если ты пишем приложение ASP.NET который обращается к контексту запроса или вызывает методы класса RoleManager из события Application_Start, вы следует изменить его для инициализации в Событие Application_BeginRequest вместо этого.

Для примера, который показывает, как использовать событие Application_BeginRequest, посмотрите образец PersonalWebSite, который поставляется с Windows Azure SDK.

0 голосов
/ 31 марта 2011

Если вы используете:

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"/>
...