Сбой балансировщика нагрузки структуры разработки Windows Azure при действии перенаправления DotNetOpenAuth mvc 2 - PullRequest
3 голосов
/ 04 августа 2010

Я связал эту ошибку с вызовом действия перенаправления DotNetOpenAuth (http://www.dotnetopenauth.net/)

В основном я реализовал пример здесь

http://www.dotnetopenauth.net/developers/code-snippets/programmatic-openid-relying-party/

В моем приложении при локальном запуске я попал в эту строку

return request.RedirectingResponse.AsActionResult();

В этот момент он завершает это действие, и затем происходит сбой балансировщика нагрузки ткани Azure Dev.

Вот где это становится странным. Если я построчно отлаживаю в действии перенаправления, оно не вылетает.

Кто-нибудь видел что-нибудь подобное, что может дать мне какое-то руководство по исправлению?

@ dthorpe указывает, что я должен рассказать вам все, что я проверил, развернув его в производственной среде, и это, похоже, работает.

Ответы [ 3 ]

3 голосов
/ 05 августа 2010

У нас была такая же проблема . На данный момент я не знаю ни одного исправления, и приложение по-прежнему работает нормально, даже если оно развернуто в облаке.

Тем не менее, для локального тестирования я просто представил переключатель (это может быть время компиляции, если DEBUG или переключатель конфигурации). Всякий раз, когда происходит попытка аутентификации через OpenID в локальной структуре разработчика, мы сразу предполагаем, что идентификация действительна и аутентифицирована DotNetOpenAuth. Это сработало для нас и позволило продвинуть развитие вперед.

1 голос
/ 28 августа 2010

У меня есть исправление. Это небольшой взлом, но он работает, и вам не нужно ничего подделывать.

Изменить это:

return request.RedirectingResponse.AsActionResult();

к этому:

string location = request.RedirectingResponse.Headers["Location"];
return Redirect(location);

Это решает проблему и позволяет продолжить аутентификацию. Я позволю кому-то умнее меня дать подробное объяснение почему это так.

Надеюсь, это поможет!

0 голосов
/ 18 июня 2012

Если кто-то ищет быстрое решение для этого, можно отключить диагностику Azure, если вы ее не используете.Это добавляется в web.config при создании проекта, просто закомментируйте элемент «add», как показано, и все готово.

<system.diagnostics>
  <trace>
    <listeners>
      <!--<add type="Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" name="AzureDiagnostics">
        <filter type="" />
      </add>-->
    </listeners>
</trace>

Конечно, это отключаетсядиагностика, так что делайте это, только если вы не используете диагностику!

...