2011-11-10 2 views
2

이 코드 http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/#comment-770을 사용하여 도메인의 컴퓨터에서 도메인 외부의 컴퓨터에 연결할 수 있습니다.asp.net은 도메인의 서버에서 도메인 외부의 서버로 가장합니다

내가 작성한 웹 응용 프로그램은 파일을 삭제하기 위해 웹 서버에서 파일 공유로 연결합니다.

내 문제는 내가 한 가지 상황에서 올바른 자격 증명을 얻을 수 없다는 것입니다. 아래에 설명 된 두 시나리오 모두에서 동일한 백엔드 dll을 사용합니다.

이 코드를 실행하는 데 2 ​​개의 응용 프로그램이 있습니다. 1은 도메인 외부의 두 시스템과 도메인의 웹 서버 및 도메인 외부의 데이터 서버를 가진 시스템입니다. 비 도메인 웹 서버 서버에서 비 도메인 데이터 서버로 요청을 수행하는 서버에서 실행중인 코드가 작동 중입니다. 도메인 웹 서버에서 비 도메인 데이터 서버를 요청하는 코드가 작동하지 않습니다.

더 테스트하려면 도메인 서버를 도메인에서 제거하고 더 이상 변경하지 않고 코드가 다시 작동하는지 확인하십시오. 그래서 내가 바꿔야 만하는 무언가가있는 것처럼 보입니다. 이 문제를 해결하기 위해 내가해야 할 일이 있습니까?

@ ----------- 아래 질문에 대한 추가 정보 :

그것은 설정 파일에 정의 된 정적 사용자 이름 passwor입니다. 계정은 도메인 계정이 아니며 다른 서버에서 사용 된 것과 동일한 계정입니다.

Request information: 
    Request URL: http://XXX.XXX.XXX.XXX/nl-nl/Attachment/GetAllFileNames 
    Request path: /nl-nl/Attachment/GetAllFileNames 
    User host address: XXX.XXX.XXX.XXX 
    User: 
    Is authenticated: False 
    Authentication Type: 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

    Thread information: 
    Thread ID: 1 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace: at System.Web.Mvc.ViewResult.FindView(ControllerContext context) 
    at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) 
     at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) 
    at System.Web.Mvc.Controller.ExecuteCore() 
    at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext) 
    at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext) 
    at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5() 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0() 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d() 
    at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f) 
    at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action) 
    at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 
+1

먼저 정적 사용자 이름/암호를 사용하고 있다고 가정합니다. 도메인 사용자입니까, 아니면 웹 서버의 로컬 사용자 계정입니까? 둘째, 오류 메시지 란 무엇입니까? 연결된 코드는 예외를 통해 오류 메시지를 반환하므로 응답 페이지 나 이벤트 로그에 표시되어야합니다. – Ben

답변

2

이 문제점을 발견했습니다.

도메인 서버를 사용할 때 대화 형 (2) 대신 logon_type_new_credentials (9)를 사용해야합니다.