Мой webrole.cs не может найти строку подключения - PullRequest
2 голосов
/ 24 марта 2012

У меня есть проект на основе Azure / Cloud (только для одного проекта).В проект добавлено WCF / WebRole.Мои сервисы WCF используют инфраструктуру сущностей для связи с базой данных SQLAzure.Это работает очень хорошо.

В web.config проекта у меня есть следующее:

<connectionStrings>
    <add name="CommuteEntities" connectionString="metadata=res://*/Db.CommuteDataModel.csdl|res://*/Db.CommuteDataModel.ssdl|res://*/Db.CommuteDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=<db-here>.database.windows.net;initial catalog=dandr;persist security info=True;user id=<user-id-here>;password=<password-here>;multipleactiveresultsets=True;App=EntityFramework&quot; " providerName="System.Data.EntityClient" />
</connectionStrings>

Пока все хорошо.Поэтому я хочу сделать небольшую запланированную фоновую обработку (основываясь на таймере, а не на входящем запросе).Это слишком маленькая задача, чтобы оправдать запуск WorkerRole для работы.

Поэтому вместо этого я создал нечто вроде следующего в проектах WebRole WebRole.cs

public override void Run()
{
    while (true)
    {
      //This is for debug purposes:
      string str = ConfigurationManager.ConnectionStrings["CommuteEntities"].ToString();

      BackgroundProcessing.BackgroundProcessing.BackgroundProcess();
      Thread.Sleep(150000); //2.5mins
    }
}

По какой-то причине строкачтобы получить строку подключения просто не похоже на работу.Тем не менее, размещение того же кода в службе WCF работает просто замечательно.

Просто чтобы подчеркнуть, в этом решении есть только один проект, и WebRole.cs находится в том же проекте, что и рабочие службы WCF.

Примечание :получение строки подключения только для целей отладки.Основная проблема, с которой я сталкиваюсь, заключается в том, что когда мой WebRole.cs пытается получить доступ к сущности, он получает следующее сообщение об исключении:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.

Примечание 2: :Я только что заметил, что может показаться, что что-то в моем WebRole.cs не может видеть ничего, что было настроено в файле Web.config.Есть ли что-то, что я не правильно делаю или неправильно понимаю?

Кто-нибудь сталкивался с этим раньше или есть идеи?

Ответы [ 2 ]

3 голосов
/ 24 марта 2012

Похоже, я не справился со следующим: Процесс веб-роли Azure не загружает web.config?

Из этого ответа:

@ stevemarx из личного общения - «Код в webrole.cs выполняется не так, как веб-приложение в IIS, и хотя вы, безусловно, должны иметь возможность открыть web.config и прочитать его (это всего лишь файл в в текущем каталоге) .NET не будет делать ничего особенного с web.config (это все равно, что поместить файл с именем web.config в тот же каталог, что и консольное приложение, которое вы запускали.) "

Так что нет, код в процессе webrole.cs не загрузит мой web.config.

Дополнительная информация здесь:

http://laorient.blogspot.com/2011/06/windows-azure-webrolecs-is-not-running.html

0 голосов
/ 25 июля 2012

Простое и глупое решение - добавить app.config и добавить туда необходимые вам конфигурации.Затем загрузите конфигурацию из метода Run() (строки подключения БД и т. Д.).Это работает!

Все остальное (службы и т. Д.) Размещено в IIS, и вы можете легко загрузить туда web.config конфигурацию файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...