0

我有通过 Active Directory 域获得 Windows 授权的 asp.net mvc 4 web api 站点。其中一部分是api控制器,通过实体框架查询sql server。Asp.net 调整得很好 - 我知道,该用户在 api 方法中被模拟。但是 EF 使用匿名凭据查询数据库。

web.config 的一部分

  <authentication mode="Windows" />
    <identity impersonate="true" />

    <authorization>
      <deny users="?" />
    </authorization>

部分方法:

    var winId = (WindowsIdentity) HttpContext.Current.User.Identity;            
    WindowsImpersonationContext ctx = null;
    try
    {
        ctx = winId.Impersonate();

        var ret = DAL.DBPort.Instance.GetDivisionStructure();
        // ret.Name = identy.AuthenticationType.ToString();
        return ret;
    }
    catch (Exception exception)
    {
        return null;
    }
    finally
    {
        if (ctx != null)
        {
            ctx.Undo();
        }
    }

m constantly getting "underlying provider failed to open". While having impersonation, asp.net still uses anonymous or system account in database connection. Don不知道,在这里做什么。

4

0 回答 0