O que faço quando o ASP.NET 5 (vNext) não pode redirecionar ligações?
Estou apenas começando a usar o MVC 6. Instalei o VS 2015 e com o padrãoASP.NET 5 preview
MVC Web Application
modelo tudo funciona bem no IIS local.
Tentei então trocar o contêiner DI padrão comStructureMap
Segueestas instruções exatamente (observe que é um artigo muito recente). A única coisa é que tive que descobrir os namespaces para me importar (já que o autor deixou de incluí-los) e foi isso que incluí.
eu ponho oStructureMapRegistration
classe e todas as classes relacionadas em um único arquivo, e aqui estão os usos.
using Microsoft.Framework.DependencyInjection;
using StructureMap;
using StructureMap.Configuration.DSL.Expressions;
Eu adicionei os seguintes usos aoStartup.cs
Arquivo.
using StructureMap;
using StructureMap.Graph;
using System.Reflection;
E eu fiz a seguinte edição noStartup.cs
Arquivo.
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add Entity Framework services to the services container.
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
// Add Identity services to the services container.
services.AddIdentity<ApplicationUser, IdentityRole>()
.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"];
});
// Add MVC services to the services container.
services.AddMvc();
//// 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();
//// Register application services.
//services.AddTransient<IEmailSender, AuthMessageSender>();
//services.AddTransient<ISmsSender, AuthMessageSender>();
var container = new Container();
container.Configure(x =>
{
x.Scan(scanning =>
{
scanning.Assembly(Assembly.GetExecutingAssembly());
scanning.TheCallingAssembly();
scanning.WithDefaultConventions();
});
//x.AddRegistry<WebsiteRegistry>();
});
// Our framework extension point
container.Populate(services);
}
Literalmente, osó O que eu mudei do modelo padrão são as alterações de código acima e a instalaçãoStructureMap
3.1.6.186
As instruções using suprimem todos os erros de compilação do tempo de design, mas quando eu construo, recebo vários outros erros.
Erro CS0012 O tipo 'Ação <>' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 32
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 32
Erro CS0012 O tipo 'Func <,>' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 59
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 59
Erro CS0012 O tipo 'Tipo' é definido em uma montagem que não é referenciada. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63
Erro CS0012 O tipo 'Expressão <>' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'System.Core, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 63
Erro CS0012 O tipo 'Tipo' é definido em uma montagem que não é referenciada. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67
Erro CS0012 O tipo 'Expressão <>' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'System.Core, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Usuários \ Shad \ documents \ visual studio 2015 \ Projetos \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 67
Erro CS0012 O tipo 'Tipo' é definido em uma montagem que não é referenciada. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89
Erro CS0411 Os argumentos de tipo para o método 'IContainer.GetInstance (string)' não podem ser deduzidos do uso. Tente especificar explicitamente os argumentos de tipo. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 89
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 107
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 107
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 120
O erro CS1061 'IContainer' não contém uma definição para 'Dispose' e nenhum método de extensão 'Dispose' aceitando um primeiro argumento do tipo 'IContainer' foi encontrado (está faltando uma diretiva de uso ou uma referência de montagem?) TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Services \ StructureMapRegistration.cs 120
Erro CS0012 O tipo 'Ação <>' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 94
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 94
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107
Erro CS0012 O tipo 'IDisposable' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107
Erro CS0012 O tipo 'Objeto' é definido em um assembly que não é referenciado. Você deve adicionar uma referência ao assembly 'mscorlib, Versão = 2.0.5.0, Culture = neutral, PublicKeyToken = 7cec85d7bea7798e, Retargetable = Yes'. TestDI3.DNX Core 5.0 f: \ Users \ Shad \ documents \ visual studio 2015 \ Projects \ TestDI3 \ src \ TestDI3 \ Startup.cs 107
O erro indica onde está o problema - eu preciso de uma referência ao mscorlib 2.0.5.0. Mas eu já estou fazendo referência ao mscorlib 4.0.0.0 no projeto.
Neste ponto no ASP.NET <5, a próxima etapa normalmente seria adicionar alguns redirecionamentos de ligação ao diretório<bindingRedirect>
seção do arquivo web.config. No entanto, depois de pesquisar como fazer isso no ASP.NET 5, me deparei comesta resposta o que indica que o redirecionamento de ligação deve ser "totalmente automático".
Portanto, isso é um bug ou há alguma etapa na minha configuração que eu perdi que está resultando nesse erro?
ConfiguraçãoDNX 1.0.0-beta5
.NET Framework
x86
IIS Express
project.json{
"webroot": "wwwroot",
"userSecretsId": "aspnet5-TestDI3-1665343b-5aa5-4d08-8596-a1a536223a19",
"version": "1.0.0-*",
"dependencies": {
"EntityFramework.SqlServer": "7.0.0-beta5",
"EntityFramework.Commands": "7.0.0-beta5",
"Microsoft.AspNet.Mvc": "6.0.0-beta5",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta5",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta5",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta5",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta5",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta5",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta5",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta5",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta5",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta5",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta5",
"Microsoft.Framework.Configuration.Abstractions": "1.0.0-beta5",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta5",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta5",
"Microsoft.Framework.Logging": "1.0.0-beta5",
"Microsoft.Framework.Logging.Console": "1.0.0-beta5",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta5",
"structuremap": "3.1.6.186"
},
"commands": {
"web": "Microsoft.AspNet.Hosting --config hosting.ini",
"ef": "EntityFramework.Commands"
},
"frameworks": {
"dnx451": { },
"dnxcore50": { }
},
"exclude": [
"wwwroot",
"node_modules",
"bower_components"
],
"publishExclude": [
"node_modules",
"bower_components",
"**.xproj",
"**.user",
"**.vspscc"
],
"scripts": {
"prepublish": [ "npm install", "bower install", "gulp clean", "gulp min" ]
}
}