1

我在 IIS 上部署了一个 MVC 4 应用程序。我试图让 Windows 用户使用如下代码,但它让我重新成为 App Pool 用户。

控制器内部的代码以获取用户:

User.Identity.Name

我试图将应用程序池标识更改为本地系统、网络系统和 ApplicationPoolIdentity。但后来它停止退回任何东西。

我正在寻找的是我不希望在用户访问站点时显示登录提示屏幕,站点应该自动选择系统用户并相应地显示结果。

配置如下:

<authentication mode="None"/>

提前致谢

4

4 回答 4

0

如果您想让 Windows 用户使用他们的 Windows 凭据自动登录到您的站点,您需要进行的唯一更改是:

<authentication mode="None" />

到:

<authentication mode="Windows" />

您的用户将在 IE 或其他已配置 NTLM 身份验证的浏览器中自动登录。如果不是,系统仍会提示他们重新输入其 Windows 凭据。

于 2014-02-24T16:51:19.017 回答
0

我相信您想找到流程模型标识。这是运行应用程序池的 ID。有时可以将其设置为 SYSTEM、网络服务或自定义域服务帐户。那是对的吗?我在另一个线程中找到了答案。

对于可能正在苦苦挣扎的人,这是我用来获取启动 AppPool 的用户名的代码(它的身份):

ApplicationPool pool = serverManager.ApplicationPools["YoutAppPoolName"];  
pool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser; 
string user = pool.ProcessModel.UserName;–  p0enkieMay 7 '12 at 6:47

您将需要添加Microsoft.Web.Administration对使用ServerManager该类的引用。

于 2014-05-23T15:58:44.140 回答
0

应用程序池的更改对我有用。

更改Load User Settingstrue应用程序池高级设置,它工作。

于 2014-05-27T08:13:30.130 回答
0

我正在使用 Windows 身份验证。我在 Web.config 文件中设置了这个:

 <authentication mode="Windows" />
 <authorization>
      <deny users="?" />
 </authorization>

我没有在 web.config 文件中放入任何模拟配置。

在 IIS 中,应用程序的所有身份验证都被禁用,Windows 身份验证除外。

使用此设置,我使用以下代码行让 windows 用户登录,而不是访问数据库的应用程序池用户:

var page = new Page();
var currentUser = page.User.Identity.Name.ToString(); 

这返回:域\用户名。

如果我使用:

var currentUser = 
System.Security.Principal.WindowsIdentity.GetCurrent().Name.ToString();

我会得到:域\AppPooluser

于 2019-05-20T08:47:55.513 回答