2011-11-10 9 views
2

このコードを使用してhttp://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/#comment-770ドメイン内のマシンからドメイン外のマシンに接続します。asp.netドメイン内のサーバーからドメイン外のサーバーに偽装

私が書いたWebアプリケーションは、ファイルを削除するためにWebサーバーからファイル共有に接続します。

私の問題は、ある状況で正しい資格情報を取得できないということです。以下で説明する両方のシナリオでは、同じバックエンドのdllを使用します。

このコードを実行する2つのアプリケーションがあります。ドメイン内の両方のマシンと1つはドメイン内のWebサーバーとドメイン外のデータサーバーです。非ドメインWebサーバーサーバーから非ドメインデータサーバーへの要求を実行するサーバー上で実行されているコードが機能しています。ドメインWebサーバー上で非ドメインデータサーバーを要求しているコードが機能していません。

さらにテストするために、ドメインサーバーをドメインから取り出し、それ以上の変更を加えずにコードが再び機能していました。だから、私が変える必要のあるものがあるように見えます。私はこれを解決するために何をする必要がありますか?

@ -----------以下の質問のための余分な情報:

これは、設定ファイルで指定された静的なユーザー名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

まず静的ユーザー名/パスワードを使用していると仮定します。ドメインユーザーですか、またはWebサーバー上のローカルユーザーアカウントですか?次に、エラーメッセージは何ですか?リンクされたコードは例外を介してエラーメッセージを返すので、応答ページまたはイベントログに表示されるはずです。 – Ben

答えて

2

この問題が見つかりました。

ドメインサーバから送信する場合、私はinteractive(2)ではなくlogon_type_new_credentials(9)を使用する必要があります。

関連する問題