[英]HTTP Error 401.0 - Unauthorized IIS 8
Working on a MVC5 project, I have access to the account / login page. 在MVC5项目上工作,我可以访问帐户/登录页面。 When I enter wrong credentials it tells me that the username / password is incorrect.
当我输入错误的凭据时,它告诉我用户名/密码不正确。 When I enter the right credentials it redirects me to home/index so I assume the login did work.
当我输入正确的凭据时,它会将我重定向到home / index,因此我认为登录确实有效。
How ever upon getting to the new page I get the following error. 到达新页面时,我得到以下错误。 HTTP Error 401.0 - Unauthorized.
HTTP错误401.0 - 未经授权。
Ant i'm not sure how I would go on and solve this. 蚂蚁我不知道如何继续解决这个问题。
My Login Controller 我的登录控制器
public ActionResult LogIn()
{
return View();
}
[HttpPost]
public ActionResult LogIn(LogOnModel model, string returnUrl)
{
if (ModelState.IsValid)
{
if (MembershipService.ValidateUser(model.UserName, model.Password))
{
FormsService.SignIn(model.UserName, model.RememberMe);
if (!String.IsNullOrEmpty(returnUrl))
{
return Redirect(returnUrl);
}
else
{
return RedirectToAction("Index", "Home");
}
}
else
{
ModelState.AddModelError("", "The user name or password provided is incorrect.");
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
And my model 而我的模特
public class LogOnModel {
[Required]
[DisplayName("User name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[DisplayName("Password")]
public string Password { get; set; }
[DisplayName("Remember me?")]
public bool RememberMe { get; set; }
}
public interface IFormsAuthenticationService {
void SignIn(string userName, bool createPersistentCookie);
void SignOut();
}
public class FormsAuthenticationService : IFormsAuthenticationService {
public void SignIn(string userName, bool createPersistentCookie) {
if (String.IsNullOrEmpty(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName");
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
}
And last my web.config: 最后我的web.config:
<?xml version="1.0"?>
<configuration>
<connectionStrings>
<add name="SaleswebEntities" connectionString=
</connectionStrings>
<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.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<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>
<authentication mode="Forms">
<forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>
<membership>
<providers>
<clear />
<add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
</providers>
</membership>
<profile>
<providers>
<clear />
<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/" />
</providers>
</profile>
<roleManager enabled="false">
<providers>
<clear />
<add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/" />
<add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/" />
</providers>
</roleManager>
<pages>
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
<add namespace="System.Web.Helpers" />
<add namespace="System.Web.WebPages" />
</namespaces>
</pages>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true" />
</system.webServer>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<appSettings>
<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
</appSettings>
</configuration>
The connection string is not empty, but I did remove it I do not want it posted public. 连接字符串不是空的,但我确实删除了它我不希望它公开发布。
I've had a simular issue and it were nothing with the code, something did happen with my iis and I had to reinstall it. 我有一个类似的问题,它与代码无关,我的iis发生了一些事情,我不得不重新安装它。 The key thing here is to make sure you uninstall the Windows Process Activation Service or otherwise your ApplicationHost.config will be still around.
这里的关键是确保您卸载Windows进程激活服务,否则您的ApplicationHost.config仍将存在。
I have noticed that you use FormsService
in your Login Controller. 我注意到您在Login Controller中使用
FormsService
。 I think that this class is SharePoint-specific. 我认为这个类是特定于SharePoint的。 I would recommend using
WebSecurity.Login()
or FormsAuthentication.Authenticate()
instead. 我建议使用
WebSecurity.Login()
或FormsAuthentication.Authenticate()
代替。
Have you checked that your Startup.cs has configured the application correctly? 您是否检查过您的Startup.cs是否正确配置了应用程序?
There should be something similar to the following in there: 那里应该有类似的东西:
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
Provider = new CookieAuthenticationProvider
{
// Enables the application to validate the security stamp when the user logs in.
// This is a security feature which is used when you change a password or add an external login to your account.
OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<ApplicationUserManager, ApplicationUser>(
validateInterval: TimeSpan.FromMinutes(30),
regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
}
});
Sounds like a IIS
permission issue, you should try running VS as administrator if you have not already. 听起来像是
IIS
权限问题,如果你还没有,你应该尝试以管理员身份运行VS.
" HTTP Error 401.0 - Unauthorized You do not have permission to view this directory or page." “HTTP错误401.0 - 未经授权您无权查看此目录或页面。”
Diagnose 401.x HTTP errors on IIS 在IIS上诊断401.x HTTP错误
Try to make sure permissions are correct for the folders. 尝试确保文件夹的权限正确。 Double-click the Authentication feature in IIS.
双击IIS中的身份验证功能。 Right-click the
"Anonymous Authentication"
provider and select edit. 右键单击
"Anonymous Authentication"
提供程序,然后选择编辑。 Now, right-click the web application in the left pane, select Edit Permissions..., select the Security tab, click Edit -> Add and add IIS APPPOOL\\NameOfAppPool
. 现在,右键单击左窗格中的Web应用程序,选择Edit Permissions ...,选择Security选项卡,单击Edit - > Add并添加
IIS APPPOOL\\NameOfAppPool
。 Make sure the Application Pool Identity has read and execute permissions of the folder. 确保应用程序池标识具有该文件夹的读取和执行权限。
Here are a few links. 这里有一些链接。
Configuring IIS (Windows 7) for ASP.NET / ASP.NET MVC 3 为ASP.NET / ASP.NET MVC 3配置IIS(Windows 7)
http://patrickdesjardins.com/blog/asp-net-mvc-http-error-401-0-unauthorized http://patrickdesjardins.com/blog/asp-net-mvc-http-error-401-0-unauthorized
https://serverfault.com/questions/348049/iis-and-http-401-0-unauthorized https://serverfault.com/questions/348049/iis-and-http-401-0-unauthorized
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.