기존 MVC 웹 사이트를 변경하라는 요청을 받았습니다. 불행히도이 사이트의 원래 개발자는 더 이상 회사에 없으므로 문서가 없으며 아무도 실제로 알지 못합니다. 그것 이외의 현재 우리의 테스트 & 라이브 환경에서 실행됩니다. 신음로컬로 MVC 웹 응용 프로그램을 실행할 수 없습니다.
어쨌든 나는 시작 프로젝트로 프로젝트를 설정하고 나는 다음과 같은 아름다운 흰색 오류 페이지 얻을 실행하면
Access is denied.
Description: An error occurred while accessing the resources required to serve this request. The server may not be configured for access to the requested URL.
Error message 401.2.: Unauthorized: Logon failed due to server configuration. Verify that you have permission to view this directory or page based on the credentials you supplied and the authentication methods enabled on the Web server. Contact the Web server's administrator for additional assistance.
을 아니를 나를위한 거대한 양 (적어도 나를 위해). 그래서 나는 web.config 파일에서 확인하고 authorization
은 다음과 같이 설정됩니다
<authorization>
<deny users=”?” />
</authorization>
나는 그것을로드 할 수 없습니다라는 페이지를 얻을 아래 나는 코드로 변경,하지만 한 단계 더있는 경우 최소한 코드에 조금이라도 들어가기 만하면됩니다.
<authorization>
<allow users="*"/>
</authorization>
코드는 작동 Active Directory
에 대한 몇 가지 검증을 수행하지, 난 브레이크 포인트를 설정하고 기능을지나 이동하여 그 성가신 보안 코드 주위에 얻을 수 있습니다. 코드 자체는 아무 것도하지 않지만 사용자가 유효하면이 코드를 true
으로 돌려 주거나 유효하지 않은 경우 false
을 반환합니다. 이것은 컨트롤러 내에서 아무 일도 일어나지 않는 것을 알기 위해 중단 점을 잡을 수있는 유일한 방법이지만 아무것도 튀어 나오지 않습니다. 코드는 부분적으로 올바른 정보를 얻기 위해 LINQ
을 사용할 클래스에 있습니다. results
가져올 때 그것이 EntityException을 던질 것이다 위의 코드에서
public ReadOnlyCollection<Application> GetApplicationStatus()
{
using (ApplicationDBEntities context = new ApplicationDBEntities())
{
var results = (from parameters in context.Parameters
join application in context.ApplicationIds on parameters.ApplicationId equals application.ApplicationId1
where parameters.ParameterName.Equals("DateTime", StringComparison.OrdinalIgnoreCase) &&
!parameters.Application.Equals(0)
select new Application
{
ApplicationId = parameters.ServiceId,
ApplicationStatus = application.Status,
DateAdded = parameters.ParameterValue
}).ToList();
return new ReadOnlyCollection<Application>(results);
}
}
는 예외의 메시지는 "내부 공급자가 열기에 실패했습니다."입니다 특정 라인은 내가 생각이와
var results = (from parameters in context.Parameters
입니다 강조 Login failed for user 'NT AUTHORITY\\ANONYMOUS LOGON'.
가
연결 문자열은 다음과 같다 :
Inner Exception
메시지를 발견 할 때 뭔가 다른 인까지 무엇과 동일하지 않습니다 그
<connectionStrings>
<add name="ApplicationDBEntities" connectionString="metadata=res://*/ApplicationDBModel.csdl|res://*/ApplicationDBModel.ssdl|res://*/ApplicationDBModel.msl;provider=System.Data.SqlClient;provider connection string="data source=MyServer;initial catalog=MyDB;integrated security=True;multipleactiveresultsets=True;App=EntityFramework"" providerName="System.Data.EntityClient" />
</connectionStrings>
정보를 얻으려는 SQL database
은 내가 직접 액세스 할 수있는 정보입니다. 이 계정에 IIS
에 액세스 권한이 없거나 다른 것이있을 수 있습니까? 이 문제의 근본 원인을 찾으려고하는 힌트가 있습니까?
개발 및 생산 환경에 대한 세부 정보를 제공해 주시겠습니까? 두 환경에서 IIS에 배포됩니까? –
라이브에서 로컬로 IIS에 배포 됨 프로젝트의 속성/웹 탭에서 가상 디렉터리를 만들어 로컬 IIS에 추가했습니다. – MattR
ActiveDirectory 사용자를 사용하여 SQL 데이터베이스로 이동합니까? 도메인 사용자를 생성하고 SQL에 추가하는 사이트)? –