웹 서버에서 디버깅을 시작할 수 없습니다. ASP.NET 디버깅 VS 2010, II7, Win 7 x64를 시작할 수 없습니다.


92

Visual Studio 2010 (관리자), Windows 7 x64에서 IIS 7을 실행하고 있습니다. 디버깅없이 IIS 7에서 ASP.NET 웹 사이트를 실행할 수 있지만 F5를 눌러 디버그하면 다음과 같은 결과가 나타납니다.

웹 서버에서 디버깅을 시작할 수 없습니다. ASP.NET 디버깅을 시작할 수 없습니다. 디버깅하지 않고 프로젝트를 시작하면 더 많은 정보를 얻을 수 있습니다.

불행히도 도움말 링크는 나를별로 돕지 않으며 커다란 사물의 나무로 이어집니다.

다음을 확인했습니다.

  • 보안 요구 사항 — 전에 특별한 작업을 수행해야했던 기억이 없습니다. IIS7의 작업자 프로세스는 w3wp.exe입니다. ASPNET 또는 NETWORK SERVICE로 실행중인 경우 디버그하려면 관리자 권한이 있어야합니다. 여기서 변경해야하는지 어떻게 알 수 있습니까?

  • 웹 사이트 속성 페이지> 시작 옵션> 디버거> ASP.NET이 선택됩니다. 사용자 지정 서버 사용은 사이트의 URL로 설정되어 있습니다 (디버깅없이 잘 작동 함).

  • 에서 디버깅이 활성화됩니다 web.config.

  • 응용 프로그램이 ASP.NET 3.5를 사용하고 있습니다 (결국 4.0으로 이동하고 싶지만 처리 할 마이그레이션이 있습니다).

  • 응용 프로그램 풀 : .NET AppPool 분류 (DefaultAppPool 시도도 함).

다음에 확인할 수있는 아이디어가 있습니까?

IIS, VS를 설치하고 웹 사이트를 만들고 테스트를 시작하는 것이 그렇게 어렵지 않을까요?

미리 감사드립니다.


1
Visual Studio를 시작할 때 명확하게하기 위해 마우스 오른쪽 단추로 클릭하고 관리자 권한으로 실행 옵션을 선택 하시겠습니까?
Aaron Carlson 2011 년

이 링크를 아직 확인하셨습니까? msdn.microsoft.com/en-us/library/dwesw3ee.aspx
Aaron Carlson

@Aaron, 예, 실제로 VS가 항상 관리자로 실행되도록 설정했습니다.
Dan C

@Aaron, 나는 여기에 게시하기 전에 그 페이지와 그 아이들을 명시 적으로 살펴 보았고 내가해야 할 일이 눈에 띄지 않았습니다. 내 시스템이 요구 사항을 충족하고 사이트에 대한 디버깅이 켜져 있습니다. Windows Server 2003이 없으므로 IIS를 구성하지 않았습니다. 필요한지 모르겠 기 때문에 보안 설정을 건드리지 않았습니다.
Dan C

이것이 도움이되는지 확실하지 않지만 VS 2010에서 새로운 테스트 ASP.NET 3.5 웹 사이트를 만들려고 시도했고 특별한 구성없이 IIS 7에 추가했으며 제대로 디버깅 할 수있었습니다. VS, IIS 또는 파일 시스템에서 구성되는 방식과 함께 내 주 응용 프로그램과 관련된 것. 어디서부터 시작해야할지 모르겠습니다.
Dan C

답변:


239

IIS로 이동하여 사용중인 앱 풀이 시작되었는지 확인하십시오. 많은 경우 앱 풀을 종료하는 오류가 발생합니다. 마우스 오른쪽 버튼을 클릭하고 시작하기 만하면됩니다.


감사합니다. 금요일에이 게시물을 찾았 으면 좋겠습니다! 풀은 중지이었고, 내가 첫 번째 오류가 발생
크리스토퍼 Cabezudo 로드리게스

제 경우에는 ISAPI 및 CGI 제한에서 ASP.NET v4.0.30319를 허용해야했습니다
Adi

15
+1 앱 풀 인증에 사용 된 사용자 이름 / 비밀번호가 잘못되었습니다.
P.Brian.Mackey 2014-06-02

3
제 경우에는 풀이 이미 시작되었지만 중지하고 다시 시작한 후에 작동했습니다.
Serj Sagan 2014-06-20

1
감사. 이 솔루션은 완벽하게 작동했습니다. 추가로 응용 프로그램 풀을 다시 시작해야했습니다.
Sunil

44

범인은 IIS Url Rewrite 모듈이었습니다. 기본 홈 URL을 가질 수 있도록 Default.aspx ( 웹 사이트시작 페이지 로 설정 됨)에 대한 호출을 사이트 의 루트로 리디렉션하는 규칙을 정의했습니다 . 그러나 분명히 VS는 이것에 문제가 있었고 혼란스러워했습니다. 이 문제는 Helicon ISAPI_Rewrite를 사용할 때 발생하지 않았으므로 확인하지도 않았습니다.

나는 완전히 새로운 웹 사이트를 처음부터 만들고 프로젝트 / 파일을 내 솔루션에 조금씩 이식하고 이것을 발견 할 때까지 web.config를 다시 빌드했습니다! 글쎄, 적어도 지금은 .NET 4.0을 사용하는 약간 더 깨끗한 사이트를 가지고 있습니다 (지금까지는 벽에 부딪히지 않을 것입니다). 그러나 얼마나 고통 스럽습니까!


6
예.하지만 응용 프로그램 풀이 실행되고 있는지 확인해야합니다.
Junior Mayhé 2011 년

그 메모에서 내 문제는 web.config의 <applicationInitialization remapManagedRequestsTo = "/ App / splash.html"doAppInitAfterRestart = "true"lockAttributes = ""> <add initializePage = "App / index.html"hostName = "에있었습니다. CSI "lockItem ="true "/> </ applicationInitialization>. 응용 프로그램이 초기화되는 동안 시작 화면을 표시하는 데 사용했습니다.
Nick

6
이것은 나를위한 것이었다. 모든 HTTP 트래픽을 HTTPS로 보내는 재 작성 규칙으로 인해이 추악한 오류가 발생했습니다. 디버깅을 위해 규칙을 유지하는 방법을 찾을 수 없었습니다.
Kat은

그냥 것이 비슷한 것을 추가하고 싶어하지만, SSL은 우리가 우리의 시작 경로이었다 thta 의미했다 다시 로컬 호스트 / APPNAME 하지만, 리디렉션 전송대로하는 로컬 호스트 / APPNAME 가 리디렉션을 처리 할 수는 오류 VS 원인 .. . 로컬 모든 것이 완벽하게 작동 IIS에서 테스트 때와 같이이 문제를 찾기 위해 우리에게 시간 + 툭 ..!
리암 웰던

여기에서도 동일한 문제가 발생합니다 (IIS Url Rewrite 모듈). 내 규칙을 내 Web.Release.config. weblogs.asp.net/srkirkland/…stackoverflow.com/questions/11032868/…을 참조하십시오 .
Swisher Sweet

42

Visual Studio는 시작할 때 (어떤 이유로 든) URL에 액세스를 시도합니다.

/debugattach.aspx

예를 들어 .aspx파일을 다른 곳에서 리디렉션 (또는 포착)하는 재 작성 규칙 이있는 경우이 오류가 발생합니다. 이 솔루션은 사용자의 시작 부분으로이 부분을 추가하는 것입니다 web.config<system.webServer>/<rewrite>/<rules>섹션 :

<rule name="Ignore Default.aspx" enabled="true" stopProcessing="true">
    <match url="^debugattach\.aspx" />
    <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
    <action type="None" />
</rule>

이렇게하면이 특정 요청을 포착 하고 아무것도 하지 않으며 가장 중요한 것은 실행을 중지하여 다른 규칙이 실행되지 않도록합니다. 이것은 강력한 솔루션이므로 프로덕션을 위해 구성 파일에 보관하십시오.


1
이것은 불행히도 개인적으로 작동하지 않았지만 web.config의 재 작성 섹션을 주석으로 처리했기 때문에 확실히 일종의 재 작성 문제인지 확인할 수 있으며 문제없이 실행할 수 있습니다.
Matt

여기에서 솔루션을 시도해 볼 수 있습니다 : stackoverflow.com/a/30813200/375303 . 나를위한 매력처럼 작동합니다.
jerhewet

Visual Studio는 DebugAttach.aspx와 관련된 오류를 여기에 기록합니다. % UserProfile % \ AppData \ Local \ Temp \ Visual Studio Web Debugger.log (해당 파일이 없거나 이전 파일 인 경우 문제가 발생합니다. DebugAttach.aspx와 관련이 없을 것입니다.)
Brandon S

제 경우에는 근본 원인은 정확하지만 해결책은 아닙니다. 저에게는 이것이 효과가 <location path="debugattach.aspx"> <system.webServer> <validation validateIntegratedModeConfiguration="false" /> <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough"> <clear /> </httpErrors> </system.webServer> </location>
Tasos K.

나에게 문제는 "/debugattach.aspx"때문 이었지만 솔루션은 erroMode도 "DetailedLocalOnly"로 변경했습니다.
Nashe

30

다른 사람들을 위해 제 경우에는 네트워크 리소스 공유에 액세스하기 위해 Windows 자격 증명을 사용하도록 응용 프로그램 풀을 구성했습니다. 솔루션을 마지막으로 디버깅 한 이후로 Windows 암호를 재설정했습니다. 앱 풀 및 bada bing에 저장된 비밀번호 변경.


감사합니다. 네트워크 공유를 사용하지도 않았지만 이것은 훌륭하게 작동했습니다.
Marissa

21

ApplicationPool Identity가 사용자 지정 계정으로 설정되고 컴퓨터의 암호가 변경된 경우 암호를 업데이트해야합니다.


네, 문제가 발생했습니다. 결과없이 여기에서 몇 가지 답변을 시도했습니다. 당신의 대답은 정말 저를 도왔습니다!
Vadzim Savenok

19

내 시나리오의 경우 web.config의 httpErrors 섹션이 다음과 같이 설정되었습니다.

<httpErrors mode="Custom"> 

"웹 서버에서 디버깅을 시작할 수 없음"문제가 발생했습니다. "DetailedLocalOnly"의 이전 값으로 다시 설정하면 문제가 해결되었습니다. 좀 더 깊이 파헤쳐 보면 실제로 401 오류 설정이 원인이라는 것을 알았습니다.

<httpErrors mode="Custom"> 
    <error statusCode="401" prefixLanguageFilePath="" path="/masterpages/500.html" responseMode="ExecuteURL" />
<httpErrors mode="Custom"> 

401 오류 줄을 주석 처리하면 문제도 해결되었으므로 사용자 지정 오류 처리를 유지하고 디버깅을 시작할 수 있기 때문에 문제를 해결했습니다.

왜 이런 일이 일어나는지 아직 모르겠습니다.


나에게도 같은 원인은 디버깅을 시작하려고 할 때 내 로그에서 401 개의 응답을 목격했고 내 기본 오류 처리를 비활성화하면 "vs can not debug site"문제가 해결되었습니다. 익명 액세스 및 웹 양식 인증 만 사용하는 동안 vs로 디버그를 시작할 때만 로그인 페이지에서도 401이 발생하는 이유를 이해하지 못합니다. 활성화됩니다.
Frédéric

이것은 나에게도 픽스였습니다. 401에 대해 명시 적으로 정의하는 대신 기본 오류 경로가 설정되어 있습니다.
tuespetre

이것이 나를 위해 일한 것입니다 (나는 일시적으로 전체 httperrors 섹션을 제거했습니다). 이전에 시도했지만 작동하지 않은 것은 앱 풀을 다시 시작하고 URL 재 작성 규칙을 제거하는 것입니다.
Nicholas Westby 2015-06-12

이것이 나를 위해 일한 것입니다. @Pablo 로미오는이 답변에 writed로 그럼 난 내 사용자 지정 오류를 변경 : stackoverflow.com/a/13905859/4489664
Bondaryuk 블라디미르

2
erroMode를 "DetailedLocalOnly"로 변경하는 것도 저에게도 해결되었습니다. 디버거가 "/DebugAttach.aspx"를 열려고하여 지정된 시간에 실행할 수없는 사용자 지정 오류 페이지로 이동했습니다.
Nashe

13

Plase 검사 응용 프로그램 풀. 중지 된 경우. 다시 시작하십시오.


4
이것은 한 달 전에 제안 된 1 위 답변과 동일합니다.
mac10688 2015

그래, 그런데 왜 매번 멈춰?
페르난도 토레스

내 응용 프로그램 풀은 암호를 변경 한 사용자에서 실행 중이었습니다.
Anderson

11

DNN (Dot Net Nuke) 모듈을 디버깅하는 데 동일한 문제가 발생했습니다. 컴파일 debug = "true"가 필요하다는 것이 밝혀졌습니다.

<compilation debug="true" strict="false" targetFramework="4.0"> 

web.config에서. 기본적으로 DNN에서는 false입니다. 원본 출처 : http://www.dnnsoftware.com/forums/forumid/111/postid/189880/scope/posts


감사합니다!! 나는 하루 종일 머리카락을 찢고 있었고 수정은 매우 간단했습니다. VS만이 의미있는 오류 메시지를 줄 수 있다면!
colincameron

8

다시 쓰기 모듈을 구현 한 후에도 똑같은 문제가 있습니다.

web.config 파일에서 다시 쓰기 항목을 제거하면 디버깅이 완벽하게 작동합니다.

이 문제를 해결하기 위해 다음과 같이 디버깅하는 동안 다시 쓰기 태그를 주석 처리합니다.

<rewrite>
    <rules>
        <rule name="LowerCaseRule_1" stopProcessing="true">
            <match url="[A-Z]" ignoreCase="false" />
            <action type="Redirect" url="{ToLower:{URL}}" />
        </rule>
        <rule name="RedirectDefault.aspx_1" stopProcessing="true">
            <match url="(.*)default.aspx" />
            <action type="Redirect" url="{R:1}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

그런 다음 디버깅 후 주석을 제거합니다.

Visual Studio 2010의 버그 여야합니다.


1
사실, 해결 방법이지만 사이트를 커밋하거나 게시하기 전에 이와 같은 주석을 제거하는 것을 잊기 쉽기 때문에 좋지 않습니다.
Jon Adams

1
web.config.release 구성 파일에서 이러한 줄을 이동할 수 있으므로 게시 할 때 게시 된 버전에만 있습니다. 그게 내가 한 일입니다.
shalke

/debugattach.aspx를 제외하면 가능합니다. 피터 승려 주석 봐
다니엘 피셔을 lennybacon

6

IIS에서 응용 프로그램 풀이 중지 된 이후 동일한 오류가 발생했습니다. 앱 풀을 시작한 후 문제가 해결되었습니다.


내 문제도 해결했습니다! 내 DefaultAppPool이 중지되었음을 알았습니다. 공유해 주셔서 감사합니다. 왜 멈췄는지 이해할 수 없습니다.
Jobert Enamno

5

지적한 오류를 해결하기 위해 내가 한 작업은 다음과 같습니다. 파일 시스템 내에서 앱의 웹 폴더를 찾고 속성 => 보안으로 이동하여 고급 버튼을 클릭 한 다음 소유자 탭을 클릭하고 편집 버튼을 클릭 한 다음 폴더의 소유자 (올바른 권한으로)를 변경하고 " Repalce 하위 컨테이너 및 개체의 소유자 "확인란. " 적용 "을 클릭 한 다음 나는 비즈니스에있었습니다 (디버그 가능).

이것이 다른 사람에게 효과가 있기를 바랍니다.


2
소유자를 누구로 변경 하시겠습니까?
dumbledad 2013

5

마침내 이것을 가진 내 단일 솔루션을 위해 이것을 수정했습니다. 솔루션의 두 프로젝트는 IIS에서 사이트로 설정되었습니다. 나는 들어가서 두 프로젝트와 VIOLA에 대한 인증에서 ASP.Net 가장을 활성화했습니다! 마침내,이 성가신 오류는 더 이상 없습니다!


3

VS 2012에서 동일한 오류 메시지가 표시되었지만 관리자로 실행되지 않았습니다. 관리자 권한으로 앱을 실행했을 때 조금 더 도움이되는 다른 메시지를 받았습니다 (알아낼 수있었습니다). HTH


3

앱 풀을 다시 시작하는 데 문제가 있거나 단순히 다시 시작하지 않으려는 경우 Windows가 ASP.NET v4.0 또는 다른 앱 풀에서 최근 업데이트를 수행했는지 확인합니다. 그것이 제 경우에 일어난 일입니다. 컴퓨터를 다시 시작한 다음 ASP.NET v4.0 App Pool을 다시 시작하면 모든 것이 다시 작동했습니다!


2

단,

Aaron의 제안 외에도 다음을 시도하십시오.

  • IIS 웹 사이트에서 통합 Windows 인증이 선택되어 있는지 확인하십시오.
  • IIS 대신 Cassini를 사용하여 디버깅 할 수 있습니까?

여기에있는 단계에 따라 통합 Windows 인증을 설정했습니다. msdn.microsoft.com/en-us/library/x8a5axew.aspx 하지만 여전히 동일한 오류가 있습니다 (iis 관리자는 challnge 및 로그인 기반 인증을 모두 사용할 수 없다는 경고를 표시합니다. -내 사이트는 양식 인증을 사용합니다.) VS 2010에 내장 된 웹 서버를 사용하여 사이트를 디버깅 할 수 있지만 기능이 없습니다.
Dan C

IIS에서 새 웹 사이트를 만들고 여기에 코드를 배포 해 보셨습니까? 궁금해서 Cassini에서 디버깅하면 어떤 기능을 놓칠 수 있습니까? 내가 아는 한 Cassini는 양식 인증을 지원합니다.
Keefu

"IIS에서 새 웹 사이트 만들기"란 무엇을 의미합니까? 이것은 새로운 OS, VS2010, IIS가 설치된 새로운 컴퓨터입니다. IIS에서 새 응용 프로그램을 만들고 실제 웹 사이트의 폴더 (백업에서 검색)를 가리 켰습니다. URL 재 작성이 Cassini에서 완전히 작동하지 않는 것 같습니다. 또한 사용자 지정 모듈을 사용하여 http와 https ( codeproject.com/KB/web-security/WebPageSecurity_v2.aspx ) 를 자동으로 전환 합니다.
Dan C

Cassini는 Url Rewrite 2 모듈을 지원하지 않습니다
citronas 2011 년

2

모든 IIS Windows 기능을 켰을 때 Windows 10에서 동일한 문제가 발생했습니다. Windows 8.1로 전환하고 다시 문제가 발생했습니다. 루트는 웹 사이트 이름 " http : //MySite.local"(OS 버전과 관련 없음)에 있습니다.

그리고 해결책은 간단합니다

  • 호스트 파일 편집 %SystemRoot%\System32\drivers\etc\

  • IP 바인딩을 사용하여 줄 추가 : 127.0.0.1 MySite.local


이것은 나에게 보석이었고 내 호스트 파일을 설정하는 것을 완전히 잊어 버렸고 로컬 iis (https 용)로 전환했을 때 내 API가 작동하지 않는 이유가 궁금했습니다. VS는 하나의 사이트에서만 실행되었지만 두 번째 사이트를 추가하면 더 이상 디버그 할 수 없어 문제가 해결되었습니다.
CDerrig 2016-06-22

1

이 오류는 IIS에 요청이 넘쳐나 게하는 엄청난 횟수를 다시 게시하는 코드의 결함으로 인해 오늘 발생했습니다. 이것은 본질적으로 IIS를 잠 갔기 때문에 디버깅을 시도했을 때 디버거를 시작하려고 '시간 초과'되었습니다. 간단히 IIS를 다시 시작했는데 몇 분이 걸리고 문제가 해결되었습니다.

나는이 오류가 덜 일반적이기를 바랍니다. 여러 가지 방법으로 생성하는 것 같습니다.


1

Windows 8.1의 Visual Studio 2012 및 2013에서 동일한 문제가 발생했습니다. 나에게 수정은 'Windows 기능 켜기 또는 끄기'를 사용하여 IIS에 Windows 인증을 추가하는 것이 었습니다.

Windows 기능 켜기 또는 끄기 스크린 샷


1

사이트의 애플리케이션 풀이 올바른 프레임 워크 버전을 사용하는지 확인합니다 . ASP.Net 2005 사이트에서 "디버깅을 시작할 수 없습니다"오류가 발생했습니다. Windows 7에서 DefaultAppPool을 잘못 사용하고있었습니다 (.Net Framework 4를 사용하고 있다고 생각합니다). .Net Framework 2를 기반으로 새로운 앱 풀을 만들고 문제 웹 사이트에 할당했습니다. 그 후 디버깅이 잘 작동했습니다.


1

IIS의 웹 사이트가 중지되지 않았는지 확인하십시오.

내 웹 사이트를 실행하도록 수정했습니다. :디


1

이 문제가 있었고 결국 ASP.net이 IIS에 제대로 등록되지 않았 음을 깨달았습니다. 이는 Visual Studio 이전에 IIS 서버가 설치된 경우 발생할 수 있습니다. 이 문제를 해결하려면 aspnet_regiis -i 명령을 사용하십시오. 자세한 내용은 링크 에서 찾을 수 있습니다.


1

같은 문제가있었습니다. IIS에 SSL 인증서가 설치되어 있고 Visual Studio에서 디버그하려는 경우 인증서를 무시하도록 IIS에서 응용 프로그램을 설정해야합니다.


1

나는 같은 문제가 있었고 Web.config끝 태그 뒤에 실수로 문자를 입력했기 때문에 발생한다는 것을 알았습니다 . 내 Web.config마지막에는 다음과 같이 보였습니다 </section>h.. "h"는 닫는 태그 뒤에 추가 문자였습니다.


0

다음과 같이 sting을 제거하십시오 : web.config에서 targetFramework = "4.0"또는 AppPool을 적절한 프레임 워크 버전으로 변경하십시오.


0

IIS UrlScan 확장을 제거하면 문제가 해결되었습니다.


0

나는 같은 문제에 직면했지만 IIS 대신 Visual Studios의 자체 웹 개발 서버에있었습니다. 해결 방법은 프로젝트 속성의 웹 탭에서 모든 사용자에게 서버 설정 적용 (프로젝트 파일에 저장) 옵션을 선택 취소하는 것입니다. 누군가의 소중한 시간을 절약 할 수 있습니다.


0

나는 같은 문제가 있었다. 위의 모든 답변이 저에게 효과가 없었습니다. 해결책은 bin 및 obj 폴더를 수동으로 삭제하는 것이 었습니다.


0

이 문제도 발견했지만 @Kirk가 설명하고 URL을 다시 작성하는 것과 가장 유사했습니다.

제 경우에는 누군가 MVC 프로젝트의 web.config 파일에이 변경 사항을 체크인했습니다.

<system.webServer>
    <security>
        <requestFiltering>
            <fileExtensions>
                <add fileExtension=".aspx" allowed="false" />
            </fileExtensions>
        </requestFiltering>
    </security>
</system.webServer>

.aspx 파일 확장자가 웹 서버에서 허용되지 않았기 때문에 /debugattach.aspxURL이 거부되어 디버거가 실행 되지 않습니다 . 이 구성을 제거하면 다시 작동했습니다.


0

Visual Studio에서 응용 프로그램을 만든 다음 속성에서 로컬 IIS와 함께 사용할 가상 디렉터리를 만들 때 동일한 문제가 발생했습니다. 누군가이 오류가 발생하면 VS가 잘못된 AppPool, 즉 귀하의 요구에 맞지 않는 AppPool에서 응용 프로그램을 생성하기 때문입니다.
이 경우 IIS 관리자로 이동하여 앱, 기본 설정으로 이동 및 앱용 AppPool을 변경하면됩니다.


0

최근에 동일한 오류가 발생했으며 제 경우에는 중복 MIME 유형이 있음이 밝혀졌습니다. 최근에 처음에 목록에 표시되지 않은 두 개를 추가했습니다. IIS에서 추가 할 수 있었으며 진단 프로세스의 일부로 사이트의 MIME 유형을 다시 확인하기로 결정했을 때만 IIS에서도 오류가 발생했습니다. web.config에서 중복을 참조했습니다. web.config 파일로 돌아가서 최근에 추가 된 두 가지 MIME 유형을 포함하는 새 섹션이 추가되었음을 알았습니다. 그 섹션을 삭제하고 인생이 다시 좋다! 이것이 다른 제안으로 문제를 해결하지 못한 다른 사람들에게 도움이 될 수 있기를 바랍니다.

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