我正在使用此代码 http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/#comment-770从域中的机器连接到域外的机器。
我编写的网络应用程序从一个网络服务器连接到一个文件共享,再传送文件。
我的问题是在一种情况下我无法获得正确的凭据。在下面描述的两种情况下,我都使用相同的后端 dll。
我有 2 个运行此代码的应用程序。 1 两台机器都在域外,一台机器在域内,数据服务器在域外。在执行从非域 Web 服务器到非域数据服务器的请求的服务器上运行的代码正在运行。域 Web 服务器上请求非域数据服务器的代码无法正常工作。
为了进一步测试,我们将域服务器从域中移出,无需进一步更改代码即可再次运行。所以看起来我必须改变一些东西(可能是一个设置)才能让它工作。有人需要我做什么来解决这个问题吗?
@------------ 以下问题的额外信息:
它是一个静态用户名密码,在配置文件中指定。该帐户不是域帐户,而是与其他服务器上使用的帐户相同。
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)
最佳答案
我发现了问题。
当来自域服务器时,我必须使用 logon_type_new 凭据 (9) 而不是交互式 (2)。
关于c# - asp.net 模拟域内服务器到域外服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084221/