为什么我的启动 class 与所有示例都不一样?
why is my startup class not the same as all the examples?
我自愿成为我朋友的 asp.net 项目的代码审查员。我认为凭借我的 C# 知识,我应该能够弄清楚足够多的基础知识,即使我对 asp.net 的结构和构建方式知之甚少。我假设从 NuGet 安装的所有大量包都来自使用 MVC 包版本 5.2.3。我的建议之一是使用 DI 并将所有数据内容移动到数据项目中,这样我们就不必依赖 EF。我个人喜欢举例说明如何做某事,所以我开始研究如何将 DI 添加到 MVC 5。我发现的两个或 3 个示例提到向启动 class 添加几行代码,但该方法没有'匹配,它让我陷入困境。这是有问题的class
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(PermitChecker.Startup))]
namespace PermitChecker
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//ConfigureAuth(app);
}
}
}
vs2015 在启动时抱怨 partial
,因为没有多个 Startup
classes。但是我将 class 与这个关于 DI (Blog Post) 的博客进行了比较,他说要让我的 ConfigureServices
方法看起来像这样,但是正如你在上面看到的那样,我没有那个方法.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<Data>();
}
这就是我的问题,我为什么不呢?该博客 post 是针对 Mvc 5 的,我认为 5.2.3 符合 Mvc 5 的要求,所以我很困惑。很抱歉回答这样一个基本问题,但网络开发根本不是我的强项。如果有帮助,这里是列出的软件包。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.4.1.9004" targetFramework="net452" />
<package id="bootstrap" version="3.0.0" targetFramework="net452" />
<package id="EntityFramework" version="6.1.3" targetFramework="net452" />
<package id="jQuery" version="1.10.2" targetFramework="net452" />
<package id="jQuery.Validation" version="1.11.1" targetFramework="net452" />
<package id="Mandrill.net" version="2.2.12" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Facebook" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Google" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.MicrosoftAccount" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Twitter" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
<package id="Modernizr" version="2.6.2" targetFramework="net452" />
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net452" />
<package id="Owin" version="1.0" targetFramework="net452" />
<package id="Respond" version="1.2.0" targetFramework="net452" />
<package id="Sendgrid" version="6.3.4" targetFramework="net452" />
<package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net452" />
<package id="WebGrease" version="1.5.2" targetFramework="net452" />
</packages>
ASP.NET 有一个新版本,称为 ASP.NET Core 1.0(以前称为 ASP.NET 5 / vNext)。这个新版本使用 MVC 6 并且是您链接到的博客 post 中描述的版本。
旧/当前版本使用MVC 5。这是您的项目正在使用的。
两种项目类型在 Visual Studio 2015 中均受支持。了解您使用的版本的一种快速方法是在 Web 项目的根目录中查找 Web.config
文件。如果您没有,那么您正在使用新版本。
我自愿成为我朋友的 asp.net 项目的代码审查员。我认为凭借我的 C# 知识,我应该能够弄清楚足够多的基础知识,即使我对 asp.net 的结构和构建方式知之甚少。我假设从 NuGet 安装的所有大量包都来自使用 MVC 包版本 5.2.3。我的建议之一是使用 DI 并将所有数据内容移动到数据项目中,这样我们就不必依赖 EF。我个人喜欢举例说明如何做某事,所以我开始研究如何将 DI 添加到 MVC 5。我发现的两个或 3 个示例提到向启动 class 添加几行代码,但该方法没有'匹配,它让我陷入困境。这是有问题的class
using Microsoft.Owin;
using Owin;
[assembly: OwinStartupAttribute(typeof(PermitChecker.Startup))]
namespace PermitChecker
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
//ConfigureAuth(app);
}
}
}
vs2015 在启动时抱怨 partial
,因为没有多个 Startup
classes。但是我将 class 与这个关于 DI (Blog Post) 的博客进行了比较,他说要让我的 ConfigureServices
方法看起来像这样,但是正如你在上面看到的那样,我没有那个方法.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddSingleton<Data>();
}
这就是我的问题,我为什么不呢?该博客 post 是针对 Mvc 5 的,我认为 5.2.3 符合 Mvc 5 的要求,所以我很困惑。很抱歉回答这样一个基本问题,但网络开发根本不是我的强项。如果有帮助,这里是列出的软件包。
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Antlr" version="3.4.1.9004" targetFramework="net452" />
<package id="bootstrap" version="3.0.0" targetFramework="net452" />
<package id="EntityFramework" version="6.1.3" targetFramework="net452" />
<package id="jQuery" version="1.10.2" targetFramework="net452" />
<package id="jQuery.Validation" version="1.11.1" targetFramework="net452" />
<package id="Mandrill.net" version="2.2.12" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net452" />
<package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" />
<package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.3" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Cookies" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Facebook" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Google" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.MicrosoftAccount" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.OAuth" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Security.Twitter" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net452" />
<package id="Modernizr" version="2.6.2" targetFramework="net452" />
<package id="Newtonsoft.Json" version="8.0.3" targetFramework="net452" />
<package id="Owin" version="1.0" targetFramework="net452" />
<package id="Respond" version="1.2.0" targetFramework="net452" />
<package id="Sendgrid" version="6.3.4" targetFramework="net452" />
<package id="SendGrid.SmtpApi" version="1.3.1" targetFramework="net452" />
<package id="WebGrease" version="1.5.2" targetFramework="net452" />
</packages>
ASP.NET 有一个新版本,称为 ASP.NET Core 1.0(以前称为 ASP.NET 5 / vNext)。这个新版本使用 MVC 6 并且是您链接到的博客 post 中描述的版本。
旧/当前版本使用MVC 5。这是您的项目正在使用的。
两种项目类型在 Visual Studio 2015 中均受支持。了解您使用的版本的一种快速方法是在 Web 项目的根目录中查找 Web.config
文件。如果您没有,那么您正在使用新版本。