我得到一個錯誤,在我看來,在ASP.net 5 Beta版6,當我使用@model
或使用@inject IOptions<AppSettings> AppSettings
錯誤觀點與asp.net 5測試版6
DI看來問題。
An error occurred during the compilation of a resource required to process this request. Please review the following specific error details and modify your source code appropriately.
/Views/Account/Login.cshtml
The type or namespace name 'LoginViewModel' could not be found (are you missing a using directive or an assembly reference?)
@model LoginViewModel
而且taghelpers不工作。 主頁上的鏈接不會轉換爲真正的鏈接。看到下面生成的HTML。
<a id="registerLink" asp-controller="Account" asp-action="Register">Register</a>
我認爲這是一些與包裝或啓動代碼。請參閱下面的代碼。
using DBC.Models.DB;
using DBC.Services;
using Microsoft.AspNet.Authentication.Facebook;
using Microsoft.AspNet.Authentication.Google;
using Microsoft.AspNet.Authentication.MicrosoftAccount;
using Microsoft.AspNet.Builder;
using Microsoft.AspNet.Diagnostics;
using Microsoft.AspNet.Diagnostics.Entity;
using Microsoft.AspNet.Hosting;
using Microsoft.AspNet.Identity.EntityFramework;
using Microsoft.Data.Entity;
using Microsoft.Framework.Configuration;
using Microsoft.Framework.DependencyInjection;
using Microsoft.Framework.Configuration.EnvironmentVariables;
using Microsoft.Framework.Configuration.UserSecrets;
using Microsoft.Data.Entity.SqlServer;
using Microsoft.Framework.Logging;
namespace DBC
{
public class Startup
{
public Startup(IHostingEnvironment env)
{
// Setup configuration sources.
var configuration = new ConfigurationBuilder(System.IO.Path.GetFullPath(System.IO.Path.Combine(env.WebRootPath, "..")))
.AddJsonFile("config.json")
.AddJsonFile($"config.{env.EnvironmentName}.json", true);
if (env.IsEnvironment("Development"))
{
// This reads the configuration keys from the secret store.
// For more details on using the user secret store see http://go.microsoft.com/fwlink/?LinkID=532709
}
configuration.AddUserSecrets();
configuration.AddEnvironmentVariables();
Configuration = configuration.Build();
}
public IConfiguration Configuration { get; set; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add Application settings to the services container.
services.Configure<AppSettings>(Configuration.GetConfigurationSection("AppSettings"));
// Add EF services to the services container.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(
option => option.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"])
);
// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
options.Password.RequireDigit = false;
options.Password.RequiredLength = 4;
options.Password.RequireLowercase = false;
options.Password.RequireUppercase = false;
options.Password.RequireNonLetterOrDigit = false;
options.SignIn.RequireConfirmedEmail = true;
options.User.RequireUniqueEmail = true;
})
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
// Configure the options for the authentication middleware.
// You can add options for Google, Twitter and other middleware as shown below.
// For more information see http://go.microsoft.com/fwlink/?LinkID=532715
services.Configure<FacebookAuthenticationOptions>(options =>
{
options.AppId = Configuration["Authentication:Facebook:AppId"];
options.AppSecret = Configuration["Authentication:Facebook:AppSecret"];
});
services.Configure<MicrosoftAccountAuthenticationOptions>(options =>
{
options.ClientId = Configuration["Authentication:MicrosoftAccount:ClientId"];
options.ClientSecret = Configuration["Authentication:MicrosoftAccount:ClientSecret"];
});
services.Configure<GoogleAuthenticationOptions>(options =>
{
options.ClientId = Configuration["Authentication:Google:ClientId"];
options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
options.Caption = "googleplus";
});
//services.Configure<OAuthAuthenticationOptions>(options =>
//{
// options.ClientId = Configuration["Authentication:Google:ClientId"];
// options.ClientSecret = Configuration["Authentication:Google:ClientSecret"];
//});
// Add MVC services to the services container.
services.AddMvc();
//Own DBC service
services.AddSingleton<MessageServices, MessageServices>();
services.AddTransient<IEmailTemplate, EmailTemplate>();
IConfiguration config = Configuration.GetConfigurationSection("mailSettings");
services.Configure<MessageServicesOptions>(config);
// Uncomment the following line to add Web API services which makes it easier to port Web API 2 controllers.
// You will also need to add the Microsoft.AspNet.Mvc.WebApiCompatShim package to the 'dependencies' section of project.json.
// services.AddWebApiConventions();
}
// Configure is called after ConfigureServices is called.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory)
{
// Configure the HTTP request pipeline.
// Add the console logger.
loggerfactory.AddConsole(minLevel: LogLevel.Warning);
// Add the following to the request pipeline only in development environment.
if (env.IsEnvironment("Development"))
{
app.UseErrorPage();
//app.UseDatabaseErrorPage(DatabaseErrorPageOptions.ShowAll);
}
else
{
// Add Error handling middleware which catches all application specific errors and
// sends the request to the following path or controller action.
app.UseErrorHandler("/Home/Error");
}
Configure2(app);
}
public void Configure2(IApplicationBuilder app)
{
// Add static files to the request pipeline.
app.UseStaticFiles();
// Add cookie-based authentication to the request pipeline.
app.UseIdentity();
// Add authentication middleware to the request pipeline. You can configure options such as Id and Secret in the ConfigureServices method.
// For more information see http://go.microsoft.com/fwlink/?LinkID=532715
// app.UseFacebookAuthentication();
app.UseGoogleAuthentication();
// app.UseMicrosoftAccountAuthentication();
// app.UseTwitterAuthentication();
// Add MVC to the request pipeline.
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller}/{action}/{id?}", new { controller = "Home", action = "Index" });
// Uncomment the following line to add a route for porting Web API 2 controllers.
//routes.MapWebApiRoute("DefaultApi", "api/{controller}/{id?}");
});
//app.UseWelcomePage();
}
}
}
而且project.json
"dependencies": {
"EntityFramework.Commands": "7.0.0-beta6-13586",
"EntityFramework.SqlServer": "7.0.0-beta6-13586",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6-12600",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6-12600",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta6-12600",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6-12480",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6-12600",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta6-13321",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6-13169",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6-12644",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta6-11976",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta6-12361",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta6-12110",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6-13550",
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta6-12409",
"Microsoft.Framework.Configuration": "1.0.0-beta6-11520",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta6-11520",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6-10457",
"Microsoft.Framework.Logging": "1.0.0-beta6-11516",
"Microsoft.Framework.Logging.Console": "1.0.0-beta6-11456",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta4",
"npm": "1.4.15.2",
"Microsoft.AspNet.MVC": "6.0.0-beta6-14192",
"Microsoft.AspNet.Mvc.Extensions": "6.0.0-beta6-14192",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6-14192"
},