Ibr*_*ikh 0 c# oauth owin asp.net-web-api2
我以前从未从事过身份验证工作,想学习 asp.net web api 中的身份验证
我创建了一个项目,并在这个项目的帮助下开始工作 教程
但我收到以下错误
尝试加载应用程序时发生以下错误。- 在“OwinBasedToken.Startup、OwinBasedToken、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null”类中找不到“配置”方法。要禁用 OWIN 启动发现,请在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup。要指定 OWIN 启动程序集、类或方法,请在 web.config 中添加带有完全限定启动类或配置方法名称的 appSetting owin:AppStartup。
描述:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其在代码中的来源的更多信息。
异常详细信息:System.EntryPointNotFoundException:尝试加载应用程序时发生以下错误。- 在“OwinBasedToken.Startup、OwinBasedToken、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null”类中找不到“配置”方法。要禁用 OWIN 启动发现,请在 web.config 中添加值为“false”的 appSetting owin:AutomaticAppStartup。要指定 OWIN 启动程序集、类或方法,请在 web.config 中添加带有完全限定启动类或配置方法名称的 appSetting owin:AppStartup。
这是我的代码
WebApiConfig.cs
using System.Web.Http;
namespace OwinBasedToken
{
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
}
Run Code Online (Sandbox Code Playgroud)
启动.cs
using Microsoft.Owin;
using Microsoft.Owin.Security.OAuth;
using Owin;
using OwinBasedToken.Provider;
using System;
using System.Web.Http;
[assembly: OwinStartup(typeof(OwinBasedToken.Startup))]
namespace OwinBasedToken
{
public class Startup
{
public void configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
configureOAuth(app);
WebApiConfig.Register(config);
app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
app.UseWebApi(config);
}
public void configureOAuth(IAppBuilder app)
{
OAuthAuthorizationServerOptions OAuthServerOptions = new OAuthAuthorizationServerOptions()
{
AllowInsecureHttp = true,
TokenEndpointPath = new PathString("/token"),
AccessTokenExpireTimeSpan = TimeSpan.FromMinutes(60),
Provider = new SimpleAuthorizationServerProvider()
};
app.UseOAuthAuthorizationServer(OAuthServerOptions);
app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
}
}
}
Run Code Online (Sandbox Code Playgroud)
SimpleAuthorizationServerProvider.cs
using Microsoft.Owin.Security.OAuth;
using System.Threading.Tasks;
using System.Security.Claims;
namespace OwinBasedToken.Provider
{
public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
{
context.Validated();
}
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
context.Validated(new ClaimsIdentity(context.Options.AuthenticationType));
}
}
}
Run Code Online (Sandbox Code Playgroud)
OwinToken控制器
using System.Web.Http;
namespace OwinBasedToken.Controllers
{
public class OwinTokenController : ApiController
{
[Authorize]
public IHttpActionResult Authorize()
{
return Ok("Authorized");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我只是想知道,我在这里做错了什么?
我错过了什么吗?
改变你的编码约定。在 C# 中,我们使用“PascalCase”。将您的配置和configurationOauth方法修复为Configuration和ConfigurationOauth(可选)以进行工作。祝你好运。
P/s: https: //learn.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions希望这对你有帮助
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |