OwinStartup이 실행되지 않음


350

OwinStartup 구성 코드가 완벽하게 작동하고 작동이 멈췄습니다. 불행히도 나는 그것이 작동을 멈추기 위해 무엇을했는지 정확히 알지 못하고 그것을 알아내는 데 정말로 어려움을 겪고 있습니다.

기본 사항을 다룰 수 있는지 확인하기 위해

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

속성이 올바르게 할당되고 owin : AutomaticAppStartup에 대한 appSetting이 false로 설정되어 있지 않으므로 이전에 아무것도 없었기 때문에 하나를 안전하도록 설정했습니다.

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

또한 appSetting을 구체적으로 호출하려고 시도했습니다.

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

작동을 멈추기 전에 Microsoft.Owin.Security NuGet 패키지를 2.0.2로 업그레이드했기 때문에 패키지를 2.0.1로 되돌리려 고 시도했지만 아무런 변화가 없었습니다. 프로젝트에 WebActivator가 설치되어 있고 다른 것을 부트 스트랩하는 데 사용하고 있지만 새로운 WebApplication 템플릿에서 테스트했으며 그 원인으로 생각하지 않습니다.

또한 새 항목 추가의 OWIN 시작 클래스 유형을 사용하여 시작 클래스를 제거하고 Visual Studio를 사용하여 새 클래스를 추가하려고 시도했지만 호출되지 않았습니다. 다음으로 두 개 이상의 OwinStartup 속성이 정의되어 있으면 예외가 발생한다는 것을 알고 있기 때문에 두 번째 Startup 클래스를 추가하려고 시도했지만 예외는 발생하지 않습니다.

무엇을 시도해야할지 모르겠습니다. 이견있는 사람?

최신 정보

사용하지 않은 참조를 제거하는 데 Resharper가 Microsoft.Owin.Host.SystemWeb에 대한 참조를 제거했음을 알 수 있습니다.


37
이 응용 프로그램에 Microsoft.Owin.Host.Systemweb 패키지가 설치되어 있습니까? 이 dll도 bin 폴더의 일부인지 확인하십시오.
— Praburaj

1
그거였다. 정말 고마워. 어떤 일이 일어 났을 때 Resharper를 사용하여 사용하지 않은 참조를 제거하고 필요하다고 생각하지 않는다고 생각합니다. 이 답변을 넣고 싶다면 분명히 솔루션으로 표시합니다. 도와 주셔서 감사합니다.
— Jeff Treuting

2
Jeff, ReSharper는 Microsoft.Owin.Host.Systemweb에 대한 "미사용"참조를 제거했습니다. "사용"에 대해 이야기하고 있습니까? 어떤 파일에서 Startup.cs?
— vkelman

4
나는 정확히 똑같은 문제가 있었고, resharper는 Microsoft.Owin.Host.SystemWeb에 대한 참조를 제거했습니다. Visual Studio에서 패키지 관리자 콘솔 창을 열고 다음 명령을 실행하여 문제를 해결했습니다. PM> Update-Package -Microsoft.Owin.Host.SystemWeb 다시 설치
— Joe King

1
위의 @JoeKing의 의견에 대한 업데이트. PM 콘솔은 "찾을 수 없음"으로 업데이트되지 않습니다. 다시 설치해야했습니다. PM> 설치 패키지 Microsoft.Owin.Host.SystemWeb
— Morvael

답변:


768

Microsoft.Owin.Host.SystemWeb프로젝트에 패키지를 설치했는지 확인하십시오 . 이 패키지는 IIS 호스팅 응용 프로그램에서 시작 감지에 필요합니다. 자세한 내용은 이 기사를 참조 하십시오 .


4
Microsoft.Owin에 대한 이러한 직접적인 참조가 필요하지 않다고 가정 할 때 ( PreApplicationStartMethod ) 가정하면 소비 / 오윈 캡슐화 라이브러리 내에서 프로그래밍 방식으로 Owin 시작 감지를 시작하는 방법은 무엇입니까? Katana에게 특별히 전화를 걸려면 어떻게해야 Startup.Configuration(IAppBuilder)합니까?
— Jason Kleban

7
MVC 템플릿을 사용하지 않고 처음부터 응용 프로그램을 만들려고합니다. 이것은 2 시간의 절망으로 끝났다.
— mkvlrn

1
리 샤퍼 링을 외 쳤을 때이 문제가 발생한 가장 큰 생산성 킬러는 일주일 동안 웹 API가 작동을 멈추는 이유를 알 수 없었습니다. 또 다른 증거 resharper는 내 생산성을 죽입니다.
— Ivan G.

5
컴파일 중에 실제로 사용되지 않는 라이브러리를 참조해야하는 것은 Microsoft의 나쁜 설계입니다! Resharper는 최선을 다하고 있지만 그러한 나쁜 결정에는 무기가 없습니다.
— ps_ttf

22
놀랄 만한. OWIN 시작 파일을 추가 할 때마다이 문제가 있습니다. 그리고 나는 이유를 잊을 때 마다이 답변을 얻습니다.
— Tobias

70

이전 MVC 버전에서 업그레이드 한 경우

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

당신의 web.config. 시작 로직 호출을 억제합니다.

대신에 그것을 바꾸십시오 true

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

나는 당신이 이미 이것을 언급했지만 때로는 사람들 (나 같은 사람들)이 전체 질문을 읽지 않고 대답으로 뛰어 넘습니다 ...

줄 어딘가에-MVC 5로 업그레이드했을 때 이것이 추가되어 오늘까지는 보지 못했습니다.


이전 mvc 프로젝트에서 Owin 시작 클래스를 구현할 때 동일한 문제가 발생했습니다. 가치를 바꾸는 것은 속임수였습니다!
— Darxtar

이것은 나를 위해 작동합니다 감사합니다
— Ghanshyam Singh

51

논의 된 원래 문제에 대한 대안 적 답변-Owin은 "발사하지 않음". 제 경우에는 중단 점을 설정할 수 없어서 발사되지 않았다고 생각하면서 몇 시간을 보냈습니다.

Visual Studio에서 OWIN 시작을 디버깅하는 경우

  • IIS Express-OWIN 시작 코드에서 "F5"를 실행하면

  • IIS- "F5" 를 실행 하면 OWIN (및 global.asax) 코드가로드 될 때까지 중단 되지 않습니다 . W3P.exe에 연결하면 들어갈 수 있습니다.


2
당신이 맞아요! 로컬 IIS에서 실행되는 동안 Visual Studio 2013 디버거가 Startup 클래스의 중단 점에서 멈추지 않습니다. 기묘한.
— vkelman

4
'attach to W3P.exe'에 대해 자세히 설명해 주시겠습니까? IIS와 충돌하지 않는 것과 동일한 문제가 있지만 IISExpress와 충돌합니다. 응용 프로그램을 중지하고 w3wp.exe에 연결된 다음 내 로컬 호스트를 탐색했지만 여전히 적중되지 않습니다. 내가 놓친 것이 있습니까?
— Sean

이전에 할 수 있다고 생각하지만 실행중인 앱 인스턴스에 연결할 수 없습니다. 브라우저에서 응용 프로그램을 열고 VS2013에서 "디버그-> 프로세스에 연결"을 사용하고 브라우저에서 페이지를 다시로드하려고했습니다. VS는 멈추지 않았다. OWIN 시작이 실행되고 있음을 알고 있습니다. 디버그 목적으로 로깅을 넣었습니다. 중간 디버깅 인쇄의 어두운 시대와 비슷합니다.
— vkelman

2
공동 작업자는 iis에서 기본 앱 풀을 두 번 클릭하고 관리 파이프 라인 모드를 클래식으로 변경하면 디버거가 시작시 중단된다는 것을 보여주었습니다. 그 후에 실행하고 응용 프로그램을 통합에서 실행해야한다는 오류가 발생하여 다시 변경해야했지만 적어도 응용 프로그램이 중단되고 있음을 알 수있었습니다.
— 매트 몸매

여기 몇 가지가 있습니다. "w3wp.exe"는 응용 프로그램 풀을 기반으로합니다. 응용 프로그램이 요청한 첫 번째 응용 프로그램이 아닌 경우 global.asax 및 owin을 디버깅 할 수 있어야합니다. 즉, 응용 프로그램 풀에서 "w3wp.exe에 연결"에서 다른 응용 프로그램을 요청한 다음 응용 프로그램에 디버그 시도를 요청하십시오.
— Brett Caswell

26

Startup클래스 의 코드를 디버깅하는 데 문제가 있다면 이 문제가 있거나 생각했습니다. 코드가 실행되었지만 디버거가 연결되기 전에 발생하므로 코드에 중단 점을 설정하고 무슨 일이 일어나고 있는지 확인할 수 없습니다.

클래스 의 Configuration메소드 에서 예외를 발생시켜이를 증명할 수 있습니다 Startup.


이것이 정확히 일어나고 있습니다. 디버거가 연결된 후 Startup 클래스를 시작하는 솔루션이 있습니까?
— Tom Schreck

구성 방법에서 예외를 발생시키는 방법을 알고 있습니까?
— Karthikeyan

1
이 행이 Startup.cs에 추가되어 실행되었음을 증명했습니다. System.IO.File.WriteAllText (@ "c : \ temp \ startup.txt", "Started");
— RaoulRubin

1
@Karthikeyan-ConifureAuth (app) 이전 (중요하지 않음) 이후에이 행을 추가하십시오. 줄-새로운 예외를 던지십시오 ( "Hello");
— Francis Rodgers

첫 줄을 System.Threading.Sleep (10_000)로 만들어 디버거가 연결하기 전에 충분히 기다릴 것입니다 (필요에 따라 조정)
— James Gray

16

디버깅 팁

디버깅이 작동하지 않으면 IIS Express를 사용하거나 로컬 IIS에 대해 아래 방법을 시도하십시오.

로컬 IIS 사용

어떤 이유로이 방법을 사용하면이 방법을 디버깅 할 수 있습니다.

  1. 웹 페이지 요청
  2. w3wp.exe 프로세스에 연결
  3. web.config 파일을 터치하십시오.
  4. 웹 페이지 요청

추가 팁

어쩌면 이렇게하면 캐시가 플러시됩니다.

  1. web.config에서 optimizeCompilations 속성을 false 값으로 추가하십시오.

    <compilation debug = "true"... optimizeCompilations = "false">

  2. 사이트 운영

  3. web.config에서 변경 사항을 취소하십시오.

2
설정 전환은 optimizeCompilations="false"저에게 효과적입니다
— barsh

당신은 내 하루를 저장합니다! optimizeCompilations = "false"작동합니다.
— Vostrugin

optimizeCompilations는 내 하루를 구했습니다. 감사합니다 :)
— Bogdan Stojanovic

13

나는 이것과 비슷한 문제가 있었고 임시 ASP.NET 파일을 지우면 문제가 해결되었습니다. 이것이 누군가를 돕기를 바랍니다.


4
참고로 다음은 이러한 파일이 저장되는 위치에 대한 좀 더 자세한 정보를 제공하는 또 다른 답변입니다. stackoverflow.com/questions/16137457/…
— Sam Storie

1
IIS EXPRESS 및 창 8을 실행 중입니다. 여기에서 삭제하십시오. C : \ Users \ 사용자 이름 \ AppData \ Local \ Temp \ Temporary ASP.NET 파일 \ vs
— Gray Wolf

감사합니다. Temporary ASP.NET Files 폴더의 파일을 잠그는 것에 대한 오류가 있었기 때문에이 답변을 발견했습니다.
— Elger Mensonides

나는 하루 종일 이것으로 고투하고 있었고 마침내 이것이 나를 위해 일했습니다. Temporary ASP.NET Files폴더 내용을 지우고 Owin 시작이 호출되었습니다.
— Harsh Baid

11

나는 같은 문제가 있었다. Microsoft.Owin.Host.SystemWeb 패키지가 설치되었지만 설치 중에 NuGet이 어떤 이유로 dll을 참조로 추가 할 수 없습니다. 프로젝트에 해당 참조가 있는지 확인하십시오. 그렇지 않은 경우 다시 설치하려고 시도 할 수 있습니다.

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

다시 설치할 때 아래와 같은 오류가 발생했지만 어떻게 든 작동했습니다.

시스템 호출에 실패했습니다. (HRESULT 예외 : 0x80010100 (RPC_E_SYS_CALL_FAILED))


나는 이것을 잠시 동안 싸우고 있었고 이것이 내 문제를 해결 한 것입니다. packages.config에 너겟 참조가 있었지만 csproj에 참조가 없었습니다.
— Zackary Geers

1
필자의 경우 패키지를 전혀 설치하지 않았습니다. install-package Microsoft.Owin.Host.SystemWeb을 실행하면 문제가 해결되었습니다. 힌트 주셔서 감사합니다.
— J. 혼

2

필자의 경우 IIS 응용 프로그램 풀이 v4로 설정되지 않았습니다. v2였습니다.

AppPool을 v4로 변경했는데 모든 것이 정상입니다.


2

기존 웹 프로젝트에 Owin을 추가 할 때도 같은 문제가있었습니다. 결국 문제는 web.config 파일의 다음으로 인한 것으로 나타났습니다.

<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>

1
sitecore 프로젝트가 있고 web.config 파일에 <remove assembly = * "/> 태그가 없지만 <add assembly ="Microsoft.Owin.Host.SystemWeb "/>를 추가하면 문제가 해결되었습니다.
— burki

귀하의 의견으로 인해 @burki에게 감사드립니다.이 솔루션을 사용해 보도록 강요했으며 우리에게도 효과가있었습니다! VS를 15.9.9로 업데이트 한 이후 Owin 시작 클래스가 시작되지 않았습니다.
— David

정말 고맙습니다! 이 문제를 해결하려면 다음을 추가해야합니다. <assemblies> <remove assembly = "*"/> <add assembly = "myapplication"/> <add assembly = "Microsoft.Owin.Host.SystemWeb"/> <add assembly = "Microsoft.Owin.Security"/> <add assembly = "System.Web.Mvc"/> <add assembly = "System.Web.WebPages"/> <add assembly = "System.Web.Helpers"/> < / assemblies>
— trykyn

1

필자의 경우 웹 사이트의 출력 경로가 누군가에 의해 변경되고 IIS Express가 OWIN을로드하지 않아 설치 클래스가 제대로 작동하지 않습니다. 출력 경로를 "bin \"으로 설정하면 제대로 작동합니다.


1

필자의 경우이 Microsoft.Owin.Host.SystemWeb 패키지가 프로젝트에 있습니다.

그러나 web.config에는 두 개의 태그가 없습니다.

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

그것들을 추가하면 원활하게 작동합니다.


1

제 경우에는 web.config가

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

그것이 Owin으로 돌아가도록 강요하기 위해 나는 그것이 필요했습니다.

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

0

이 게시물에 대한 많은 제안으로 혼란 스러웠습니다.

나는 다음을 가졌지 만 여전히 중단 점에 도달하지 못했습니다. 예외를 던지면 코드가 입력되고 있음이 증명되었습니다.

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

마지막으로 절망에서 프로젝트-> 속성을 ​​살펴본 다음 웹 섹션에서 NATIVE CODE 확인란도 선택했습니다 (ASP.NET은 이미 확인되어 있어야 함).

그것은 마침내 나를 위해 고쳤다.

참고 : Visual Studio 2017 Professional을 사용하고 있습니다.


0

이것이 여전히 누군가를 도울 수 있는지 확실하지 않지만 위의 모든 솔루션 (및 다른 게시물에서)을 아무 소용이 없습니다.

내 문제를 해결 한 것은 web.config의 RedirectUri 값 끝에 백 슬래시를 넣는 것입니다 (미쳤습니다!). RedirectUri는 UseOpenIdConnectAuthentication의 매개 변수입니다.

따라서 대신 :

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

이 작업을 수행:

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

또한 Azure 앱 설정에서 회신 URL을 업데이트했습니다.

그것은 어떻게 든 시작을 예상대로 실행하게 만들었고 (아마 캐시를 지 웠을 수도 있음) 중단 점이 이제 시작되었습니다.

참고로 나는 여기에서 내 코드를 모델링했다 : https://github.com/microsoftgraph/aspnet-connect-sample


0

클래스 라이브러리를 Web Application Project로 변환 한 후이 문제가 발생 하여 완고 해졌습니다. 내 .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 폴더의 하위 폴더에 작성합니다 (만약 작동하지 않습니다). 솔루션은 모두 텍스트 내용을 변경했다 OutputPath단지에 bin\.

0

나에게 그것은 같은 네임 스페이스에 없기 때문이었습니다. "project.Startup.AppStart"에서 AppStart를 제거하고 "project.Startup"네임 스페이스를 사용하여 Startup.cs와 Startup.Auth.cs를 모두 작동시킨 후 모든 것이 완벽하게 작동했습니다.

도움이 되길 바랍니다.


0

IIS 호스팅에서이 문제가 발생하지만 F5 디버깅시에는 나타나지 않는 경우 IIS에서 새 응용 프로그램을 만들어보십시오.

이것은 나를 위해 그것을 고쳤다. (windows 10) 결국 "나쁜"IIS 응용 프로그램을 삭제하고 동일한 이름을 가진 동일한 응용 프로그램을 다시 만들었습니다.


0

일부 사람들이 프로그래밍하려고 OWIN 서버를 "삶에 온"상태로 만들려면 다음과 같이 호출해야합니다.

using Microsoft.Owin.Hosting;

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

이 호출을하면 디버거에서 StartupMethod () 호출이 나타납니다.



0

이것은 나를 위해 일했다 :

인증 모드 추가 = 없음

<system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    <httpRuntime targetFramework="4.6.1" />
      <authentication mode="None" /><!--Use OWIN-->
  </system.web>

-3

먼저 OWIN 인증 클래스를 추가 한 다음 web.config에서 OWIN : AutomaticAppStartup 키 를 활성화 하십시오. 이제 발사 될 것이다

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.