OwinStartup не стреляет



у меня был код конфигурации OwinStartup, работающий отлично, а затем он перестал работать. К сожалению, я не уверен, что именно я сделал, чтобы заставить его перестать работать, и мне очень трудно понять это.



чтобы убедиться, что у меня есть основы, я дважды проверил, чтобы убедиться, что у меня есть



[assembly:OwinStartup(typeof(WebApplication.Startup))] 


атрибут назначен правильно и убедитесь, что у меня нет appSetting для owin: AutomaticAppStartup, который установлен в false, поэтому я сделал один набор правда, чтобы быть в безопасности, как там ничего не было раньше.



<add key="owin:AutomaticAppStartup" value="true" />


Я также попытался специально вызвать appSetting:



<add key="owin:appStartup" value="WebApplication.Startup" />


прежде чем он перестал работать, я обновил Microsoft.Долг.Пакеты безопасности NuGet до 2.0.2, поэтому я попытался вернуть их в 2.0.1 (это было больно), но это ничего не изменило. У меня есть WebActivator, установленный в проекте, и я использую его для загрузки других вещей, но я проверил это на новом шаблоне веб-приложения, и он работает там, поэтому я не думаю, что это виновник.



Я также попытался удалить свой класс запуска и с помощью Visual Studio добавить новый, используя тип класса запуска OWIN в Add New Item, и это тоже не вызывается. Затем я попытался добавить второй класс запуска, так как я знаю, что он вызовет исключение, если определено более одного атрибута OwinStartup, но он не вызывает никаких исключений.



не уверен, что еще попробовать. Любой мысли?



обновление



оказывается, что Resharper удалил ссылку на Microsoft.Долг.Хозяин.SystemWeb, когда я использовал его для удаления неиспользуемых ссылок.

688   19  

19 ответов:

убедитесь, что вы установили Microsoft.Owin.Host.SystemWeb пакет в проекте. Этот пакет необходим для обнаружения запуска приложений в IIS. Для получения дополнительной информации вы можете обратиться к этой статьи.

альтернативный ответ на исходную обсуждаемую проблему-Owin " не стреляет."В моем случае я провел часы, думая, что он не стреляет из-за неспособности установить точку останова в нем.

при отладке запуска OWIN в visual studio

  • IIS Express-запуск "F5" сломается на стартовом коде OWIN

  • IIS-запуск "F5"не будет перерыв до после OWIN (и глобальный.asax) код загружен. Если вы прикрепляетесь к W3P.exe вы сможете войти в него.

если вы обновили с более старой версии MVC убедитесь, что у вас нет

  <add key="owin:AutomaticAppStartup" value="false" />

в своем web.config. Он будет подавлять вызов логики запуска.

вместо этого измените его на true

  <add key="owin:AutomaticAppStartup" value="true" />

Я понимаю, что вы уже упоминали об этом, но иногда люди (как и я) не читают весь вопрос и просто переходят к ответам...

где - то вдоль линии-когда я обновился до MVC 5 это было добавлено, и я никогда не видел его до сегодняшнего дня.

Если у вас возникли проблемы отладки кода Startup класс, у меня тоже была эта проблема - или я думал, что сделал. Код был запущен, но я считаю, что это происходит до того, как отладчик подключился, поэтому вы не можете установить точки останова в коде и посмотреть, что происходит.

вы можете доказать это путем исключения в Configuration метод Startup класса.

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

СОВЕТЫ ПО ОТЛАДКЕ

Если отладка не работает попробуйте использовать IIS Express или попробуйте метод ниже для локальных IIS

использование локальных IIS

по какой-то причине этот метод позволяет отлаживать этот метод:

  1. запрос веб-страницы
  2. прикрепить к w3wp.ехе процесс
  3. коснитесь веб-страницы.конфигурационный файл
  4. запрос веб-страницы

дополнительно совет

возможно, это приведет к очистке кэша:

  1. в интернете.config добавьте атрибут optimizeCompilations с ложным значением

  2. сайт

  3. отменить изменения в web.конфигурации

У меня была та же проблема. Microsoft.Долг.Хозяин.Пакет SystemWeb был установлен, но во время установки NuGet по какой-то причине не смог добавить dll в качестве ссылки. Убедитесь, что ваш проект имеет ссылку. Если нет, вы можете попробовать переустановить:

update-package Microsoft.Owin.Host.SystemWeb -reinstall

У меня была ошибка, как показано ниже на переустановке, но как-то это сработало:

сбой системного вызова. (Исключение из HRESULT: 0x80010100 (RPC_E_SYS_CALL_FAILED))

в моем случае пул приложений IIS не был установлен в v4. Это был В2.

изменил AppPool на v4, и все было в порядке.

в моем случае это Microsoft.Долг.Хозяин.Пакет SystemWeb присутствует в проекте.

а ниже две метки не присутствуют в интернете.конфиг.

<add key="owin:AutomaticAppStartup" value="true" />
<add key="owin:appStartup" value="namespace.className.methodName" />

после добавления их он работает плавно.

в моем случае путь вывода моего сайта кем-то изменен, IIS Express даже не загружает OWIN, и класс установки, конечно, не будет поражен. После того, как я установил выходной путь как "bin\", он хорошо работает.

у меня была такая же проблема, когда я добавил Owin в существующий веб-проект. В конце концов я обнаружил, что проблема была вызвана следующим в интернете.конфигурационный файл.

<assemblies>
  <remove assembly="*" />
  <add assembly="System.Web.Mvc" />
  <add assembly="System.Web.WebPages" />

   ...

</assemblies>

удалить сборку="* " была причиной проблемы. Когда я удаляю эту строку, запускается код запуска Owin. Я в конечном итоге изменить его на следующий, и он работал отлично

<assemblies>
  <remove assembly="*" />
  <add assembly="Microsoft.Owin.Host.SystemWeb" />
  <add assembly="System.Web.Mvc" />
  <add assembly="System.Web.WebPages" />
  <add assembly="System.Web.Helpers" />
...
</assemblies>

я возился с большим количеством предложений на этот пост.

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

<appSettings>
...
  <add key="owin:AutomaticAppStartup" value="true" />
  <add key="owin:appStartup" value="SSOResource.Startup, SSOResource" />
...
</appSettings>

наконец, от отчаяния я посмотрел на project - > properties, а затем в разделе WEB я также проверил флажок NATIVE CODE (ASP.NET должно быть уже проверено).

это, наконец, исправило это для меня.

Примечание : я использую Visual Studio 2017 Professional.

Я не уверен, что это все еще поможет кому-то, но я сделал все решения выше (и из некоторых других сообщений) безрезультатно.

что исправило проблему на моем конце было поставить обратную косую черту в конце значения RedirectUri в интернете.конфиг (сумасшедший, я знаю!). RedirectUri-это параметр в UseOpenIdConnectAuthentication.

, вместо:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home" />

этого:

<add key="ida:RedirectUri" value="https://www.bogussite.com/home/" />

и обновил URL-адрес ответа в настройках приложения Azure как что ж.

это каким-то образом заставило запуск работать так, как ожидалось (вероятно, очистило некоторый кэш), и точки останова теперь срабатывают.

к вашему сведению. Я моделировал свой код отсюда:https://github.com/microsoftgraph/aspnet-connect-sample

после преобразование библиотеки классов в проект веб-приложения, я столкнулся с этим и стал упрям. Оказалось, по моему .csProj файл, у меня было это:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
  <DebugSymbols>true</DebugSymbols>
  <DebugType>full</DebugType>
  <Optimize>false</Optimize>
  <OutputPath>bin\Debug\</OutputPath>
  <DefineConstants>DEBUG;TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
  <DebugType>pdbonly</DebugType>
  <Optimize>true</Optimize>
  <OutputPath>bin\Release\</OutputPath>
  <DefineConstants>TRACE</DefineConstants>
  <ErrorReport>prompt</ErrorReport>
  <WarningLevel>4</WarningLevel>
</PropertyGroup>
  • таким образом, построение различных dll в подпапку папки bin (которая ifc. не получится). Решение состояло в том, чтобы изменить оба текстовых содержимого для OutputPath просто bin\.

для меня это было потому, что они не находятся в одном пространстве имен. После того, как я удалю свой AppStart из "проекта.Запуск.AppStart " и пусть они оба запускаются.cs и запуск.Автор.cs с " проектом.Startup " пространство имен, все вернулось к работе отлично.

Я надеюсь, что это поможет!

в моем случае, мой веб.конфиг имел

<authorization>
  <allow users="?" />
</authorization>

чтобы заставить его вернуться к Оуину, мне нужно было, чтобы он был

<authorization>
  <deny users="*" />
</authorization>

Если вы видите эту проблему с хостингом IIS, но не при отладке F5, попробуйте создать новое приложение в IIS.

это фиксированная это для меня. (windows 10) в конце концов я удалил "плохое" приложение IIS и повторно создал идентичный с тем же именем.

Я думаю, что некоторые люди пытались получить выше, что если вы хотите программно сделать ваш сервер OWIN "оживают", вы бы называли что-то вроде этого:

using Microsoft.Owin.Hosting;

    IDisposable _server = WebApp.Start<StartupMethod>("http://+:5000"); 
              // Start Accepting HTTP via all interfaces on port 5000

Как только вы сделаете этот вызов, вы увидите вызов StartupMethod() fire в отладчике

Сначала добавьте класс OWIN Auth, а затем включите OWIN: AutomaticAppStartup ключ в веб.конфиг нравится Теперь он будет стрелять

Comments

    Ничего не найдено.