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.