2014-09-11 4 views
0

나는 SignalR에 매우 이상한 문제가있어서 어떻게해야할지 모르겠다. SignalR 허브, Windows 인증에서 권한 부여 특성의 예기치 않은 동작

나는 VB.NET에서 튜토리얼 ( http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20)에서 간단한 SignalR 응용 프로그램을 만들어, 내가 변경 유일한 것은 내가 허브 클래스에 <Authorize()> 속성을 추가하고, 컨텍스트에서 메시지 보내기 방법 잡아 사용자 이름을 만든 것이 었습니다.

개발 서버 (Windows Server 2008 R2, IIS7, .NET 4.5.1)가 있습니다. 개발 서버에서 IIS 및 응용 프로그램 설정에서 Windows 인증 및 ASP.NET 가장을 사용하도록 설정했습니다. 응용 프로그램이 예상대로 작동합니다.

이제이 간단한 응용 프로그램을 프로덕션 서버에 배포하면 응용 프로그램이 작동하지 않습니다. OS와 .NET 버전은 동일하며 관리자에게 개발과 동일한 방식으로 IIS 및 응용 프로그램 설정을 구성하도록 요청했습니다. 크롬에서 index.html을 열면 JS 콘솔에 ERR_INVALID_AUTH_CREDENTIALS가 표시되고 FF Firebug는 401 Unauthorized 오류를 발생시킵니다. 물론 허브 방법은 작동하지 않습니다.

허브에서 <Authorize()> 특성을 제거하고 응용 프로그램을 다시 컴파일하면 dev와 prod에서 모두 작동하지만이 경우에는 컨텍스트에서 사용자 이름이 비어 있습니다. 따라서 문제는 확실히 인증 또는 인증 어딘가에 있습니다.

우리는 Windows 인증을 사용하는 프로덕션 서버에 다른 응용 프로그램을 가지고 있지만 문제는 전혀 발생하지 않았습니다.

어떤 문제가 서버/IIS에서 발생할 수 있습니까?

답변

3

우리가 똑같은 문제가 있었는지 확실하지 않지만 다른 사람들이 문제에 대한 해결책을 찾고있는 중에 그렇게 생각할 수도 있습니다.

내 권한 문제는 [Authorize] 속성이 MVC 컨트롤러에서 제대로 작동했지만 이름이 다른 네임 스페이스의 특성이 내 허브에서 작동하지 않았습니다. 나는 계속 Context.User가 null 인 것을 보았고, 허브에 연결을 시도하는 클라이언트가 401 개의 인증되지 않은 메시지를 받았습니다.

나는 일주일에 몇 시간 동안 내 문제의 원인을 찾아 내고 마침내 알아 냈습니다.

[assembly: OwinStartup(typeof(Startup))] 

namespace Your.Namespace 
{ 
    public partial class Startup 
    { 
     public void Configuration(IAppBuilder app) 
     { 
      ConfigureAuth(app); 
      ConfigureSignalR(app); 
     } 
    } 
} 
당신이 ConfigureSignalR 전에 을 ConfigureAuth 것이 지금 나에게 그것의 명백한

하지만 충분히 명시하지 시작하기 가이드입니다. 나는 그들에게 잘못된 길을 걸었다.

희망이 있으면 도움이됩니다.

+1

동일한 문제가 있습니다. ConfigureAuth (앱) 이후에 SignalR 구성을 설정해야합니다. Owin 파이프 라인에 대한 성명서. 이 이안을 게시 해 주셔서 대단히 감사합니다. 왜냐하면 내가이 시간에 내 머리를 긁을 때 쉽게 시간을 할애 할 수 있었기 때문입니다! –