Asp.net从域内服务器模拟到域外服务器

本文关键字:服务器 模拟 net Asp | 更新日期: 2023-09-27 18:14:23

我使用此代码http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/#comment-770从域中的机器连接到域外的机器。

我编写的web应用程序从一个web服务器连接到一个文件共享器来发布文件。

我的问题是我不能得到正确的证书在一个情况下。在下面描述的两个场景中,我使用相同的后端dll。

我有2个应用程序运行这段代码。两台机器都在域外,一台网络服务器在域内,数据服务器在域外。执行从无域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)

Asp.net从域内服务器模拟到域外服务器

我找到问题了。

当来自域服务器时,我必须使用logon_type_new_credentials(9)而不是interactive(2)。