我一直在努力让Windows身份验证与开发中的MVC3应用程序(VS 2010 SP1)一起使用,到目前为止还没有真正的运气.我在我的开发机器上运行XP(直到明年没有钱进行升级),如果这有所不同.我还应该提到我使用IIS Express作为VS 2010的默认Web开发服务器.
我开始使用一个空的MVC3应用程序,因为我没有从VS菜单中获得Intranet模板,直到我昨天升级了MVC3工具(好吧,我有点慢).一旦我安装并检查了该模板,我就将DirectoryServices的引用添加到了我的项目中,并在页面的右上角添加了显示当前登录用户的代码.根据图形,它现在应该说"欢迎PCE\dnewman!"
我遵循了这篇文章中的优秀说明:IIS Express Windows身份验证并确实取得了一些进展.但是,我现在从IIS Express收到401.2错误,告诉我我没有被授权......
所以,我进入了我的项目属性并将Anonymous Authentication设置为Enabled.现在我可以访问该网页,但我在页面右上角看到的是"欢迎!" - 没有用户名.
我尝试使用IE和Firefox,结果相同.什么$#^&!我在这儿失踪了?好像我没有登录到Windows !! 我在哪里开始寻找问题?
在几年前的前雇主,我写了一个Windows窗体应用程序,用他们的Windows登录凭据对用户进行身份验证.在这种情况下,我必须特别注意发送凭据,然后在服务端显式验证它们.我是否需要做些什么来使浏览器包含每个GET或POST的凭据?
根据请求,这是我的web.config的内容,对所有Glimpse配置的东西道歉.
<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="glimpse"
type="Glimpse.Core.Configuration.GlimpseConfiguration" />
</configSections>
<appSettings>
<add key="ClientValidationEnabled"
value="true" />
<add key="UnobtrusiveJavaScriptEnabled"
value="true" />
</appSettings>
<system.web>
<compilation debug="true"
targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
</compilation>
<pages>
<namespaces> …Run Code Online (Sandbox Code Playgroud) 我有IP地址,但由于某种原因,我可以正确解析名称以显示本地计算机名称.我尝试了几件事,所有这些都显示服务器主机名?
ipadd = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
IPAddress myIP = IPAddress.Parse(ipadd);
IPHostEntry GetIPHost = Dns.GetHostEntry(myIP);
//userhostname = System.Environment.MachineName;
//userhostname = Dns.GetHostName(); //Resolve ServerHostName not computer
//userhostname = HttpContext.Current.Request.UserHostName;
//userhostname = HttpContext.Current.Request.UserAgent;
userhostname = GetIPHost.HostName;
Run Code Online (Sandbox Code Playgroud)
对于用户名,我要使用
nametext = WindowsIdentity.GetCurrent().Name;
//Shows server name when deployed on server
//when debuging and running localy shows correctly current user logged in
//nametext = HttpContext.Current.Request.ServerVariables["LOGON_USER"];
// not returning anything
Run Code Online (Sandbox Code Playgroud)
我切换了身份验证,没有结果
<authentication mode="Forms">
<authentication mode="Windows">
Run Code Online (Sandbox Code Playgroud) 我使用visual studio 2015在我的办公室PC上创建了一个简单的web api项目,Windows登录公司Domain(AD).我更改了web.config文件以进行集成身份验证 - <system.web><authentication mode="Windows" />.url http:// localhost:23151/api/Model1从数据库返回有效的xml数据.
我在IIS Express(开发服务器)设置的项目属性中将匿名身份验证更改为已禁用,并将Windows身份验证更改为已启用.
我设置了一个断点public IQuerybal<Model1> GetModel1()并检查其值User.Identity.Name并返回null?
更新:
奇怪的是我在另一台PC上创建了一个新项目(仍在Visual Studio 2015中),我可以从属性中获取Windows登录信息User.Identity.Name.
更新2: 我试图将项目文件复制到新PC,它仍然遇到同样的问题.所以它应该是项目中的一些设置.很奇怪.
我正在将一个新的EF 4.0 ASP.NET MVC 4站点部署到IIS 7.0服务器,但是我收到一条错误消息:
"HTTP错误401.2 - 未经授权由于身份验证标头无效,您无权查看此页面."
我禁用了匿名身份验证和表单身份验证.ASP.NET模拟和Windows身份验证都已启用.
根据这篇Microsoft知识库文章,我已经确认一切正常
更好的是,在同一个应用程序池中已经存在使用相同类型的身份验证的工作站点.
我不确定接下来要检查什么.有谁知道是什么导致了这个错误?