在阅读多个论坛(有点)相同的问题,但没有一个建议的答案解决我的问题,我最终得到了自己的帖子。
正如标题所说,我在使用身份验证触发我的应用程序(在localhost上进行测试)时遇到问题。
我不断得到的错误:
HTTP Error 404.0 - Not Found
The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.
Detailed Error Information:
Module
IIS Web Core
Notification
MapRequestHandler
Handler
StaticFile
Error Code
0x80070002
Requested URL
http://localhost:xxxx/auth/login?ReturnUrl=%2F
Physical Path
c:\users\xxxx\documents\visual studio 2015\Projects\MyProject\MyProject\auth\login
Logon Method
Anonymous
Logon User
Anonymous
Request Tracing Directory
C:\Users\xxxx\Documents\IISExpress\TraceLogFiles\MyProject
我使用的代码如下:
App_Start文件夹中的启动类
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "ApplicationCookie",
LoginPath = new PathString("/auth/login")
});
}
}
FilterConfig类也位于App_Start文件夹中:
public class FilterConfig
{
public static void RegisterGlobalFilters(GlobalFilterCollection filters)
{
filters.Add(new HandleErrorAttribute());
filters.Add(new AuthorizeAttribute());
}
}
Global.asax中的registerFilters
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
}
控制器被称为Auth(AuthController),actionresult
登录(并为其添加了视图)。这里没什么特别的,因为我已经收到了错误。
在web.config中,我在appSettings中添加了一行:
<add key="owin:AppStartup" value="MyProject.App_Start.Startup"/>
我不知道我做错了什么,也许是一些错误的IIS配置?或者它真的是给出错误的路径?
这些是我已经尝试的事情(取自其他几个帖子)
<add key="autoFormsAuthentication" value="false" />
和<add key="enableSimpleMembership" value="false"/>
到WebConfig文件。 答案 0 :(得分:0)
经过一些干预并查看其他身份帖后,我发现我收到的错误消息是因为我已将RouteConfig中的URL设置为空。
我喜欢这样:
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "StartWeb", action = "Index", id = UrlParameter.Optional }
);
虽然它应该是这样的:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "StartWeb", action = "Index", id = UrlParameter.Optional }
);
将其更改回默认值时,错误消失了。