VS 2015+所有更新。添加了一个带有身份验证(Identity)的ASP.Net项目目标-将项目划分为多个层。
图层:
DataAccess(所有数据库表、模型等)
BusinessLogic(CRUD操作)
Web类库(所以我不需要绑定DA和BL,我添加了一个额外的层来实现这一点)
ASP.Net Web应用程序
- 将模型文件夹移动到DA中
- 将IdentityConfig.cs移动到DA的根目录中
- 添加DA所需的所有引用,相应地更改命名空间。项目成功生成
- 将控制器文件夹移到BL中
- 添加BL所需的所有引用,相应地更改名称空间。项目成功生成
- 将BundleConfig、FilterConfig、RouteConfig和Startup.Auth移动到Web类库的根目录
- 添加web库所需的所有引用。项目成功生成
- 在Web应用程序中,我更改启动和
课堂和项目中的代码:
using Microsoft.Owin;
using Owin;
using Company.Web;
[assembly: OwinStartupAttribute(typeof(Startup))]
namespace Company.Web
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
}
}
}
Startup.Auth中的代码
namespace Company.Web
{
public partial class Startup
{
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context, user manager and signin manager to use a single instance per request
我得到错误
抑制状态错误CS0103当前上下文WebApplication1中不存在名称"ConfigureAuth"
我在"启动"上有一个歪歪扭扭的文字,上面有一条友好的信息:
〔assembly:OwinStartupAttribute(typeof(Startup))〕
"…."中的类型"Startup"。。。。WebApplication1\Startup.cs与"Company.Web,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null"中导入的类型"Startup"冲突。使用"…."中定义的类型。。。。WebApplication1\Startup.cs'./em>
错误
CS0103当前上下文WebApplication1中不存在名称"ConfigureAuth"。。。。WebApplication1\Startup.cs
所以我四处研究,看到了一些链接,例如
名称configureauth不存在名称';ConfigureAuth';不存在于当前上下文中ASP.NET MVC OWIN和SignalR-两个Startup.cs文件
但我不知道我构建这个项目的方式是不正确的,还是我遗漏了一些明显的东西?
如果您使用默认的Visual Studio项目模板,ConfigureAuth方法可以在分部类Startup.Auth.cs中找到。因此,请确保在修改项目结构时没有破坏任何内容。
这是ConfigureAuth方法的一个示例:
// For more information on configuring authentication, please visit http://go.microsoft.com/fwlink/?LinkId=301864
public void ConfigureAuth(IAppBuilder app)
{
// Configure the db context and user manager to use a single instance per request
app.CreatePerOwinContext<ApplicationUserManager>(ApplicationUserManager.Create);
// Enable the application to use a cookie to store information for the signed in user
// and to use a cookie to temporarily store information about a user logging in with a third party login provider
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);
// Configure the application for OAuth based flow
PublicClientId = "self";
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString("/api/Token"),
Provider = new ApplicationOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
AllowInsecureHttp = true
};
// Enable the application to use bearer tokens to authenticate users
app.UseOAuthBearerTokens(OAuthOptions);
}