Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ASP.NETMVC中的LINQtoSQL在使用模拟时作为网络服务运行_Sql_Asp.net Mvc_Linq To Sql - Fatal编程技术网

ASP.NETMVC中的LINQtoSQL在使用模拟时作为网络服务运行

ASP.NETMVC中的LINQtoSQL在使用模拟时作为网络服务运行,sql,asp.net-mvc,linq-to-sql,Sql,Asp.net Mvc,Linq To Sql,我有一个ASP.NETMVC控制器动作,它实例化了一个DataContext对象,我目前正在将连接字符串直接传递到构造函数中。我正在使用模拟,并已验证控制器操作中的当前用户是当前Windows身份验证。但是,当运行SQL跟踪时,web应用程序的用户查询始终作为网络服务运行。数据上下文对象在web应用程序的另一个项目中引用,但我将连接字符串直接传递到构造函数中,因此这不应该是一个问题。以下是当前控制器操作中的内容: // verified the user is the curre

我有一个ASP.NETMVC控制器动作,它实例化了一个DataContext对象,我目前正在将连接字符串直接传递到构造函数中。我正在使用模拟,并已验证控制器操作中的当前用户是当前Windows身份验证。但是,当运行SQL跟踪时,web应用程序的用户查询始终作为网络服务运行。数据上下文对象在web应用程序的另一个项目中引用,但我将连接字符串直接传递到构造函数中,因此这不应该是一个问题。以下是当前控制器操作中的内容:

        // verified the user is the current Windows Auth. user of the web app
        var user = this.User;

        var connectionString = "Data Source=serverName;Initial Catalog=dbName;Integrated Security=true";
        var context = new CustomDataContext(connectionString);
        var test = context.Customers.Select(i => i.fullname).ToList();

除了查询始终作为网络服务而不是当前用户运行这一事实之外,数据库的一切都进展顺利。你知道为什么会出现这种情况以及如何解决吗?

你很可能看到网络服务,因为这是IIS 6和7中应用程序池运行的默认帐户

通常,在asp.net应用程序中有两种模拟方式:

  • web.config中的标记
  • 更改IIS中应用程序池的标识
  • 这两个选项都是全局的,将影响每个请求


    但是,听起来好像您想要为每个登录的用户模拟windows auth用户。如果是这样,请参见-特别是标题为“在代码中模拟特定用户”的部分,因此您看到的是委派问题。标识不会在IIS外部自动流动

    如果已经为Windows身份验证配置了所有内容,则需要包装数据库打开调用,以便在web应用程序外部的上下文中临时使用Windows标识。代码如下所示

    using (((WindowsIdentity)HttpContext.Current.User.Identity).Impersonate())
    {
        // Perform database or network access here
    }
    
    您可能希望将其包装在检查中,检查当前标识并确保它是Windows标识