2015-03-21 2 views
1

Пробовал обернуть мою голову вокруг этого в течение нескольких часов и дошел почти до отказа.AmbiguousMatchException при запуске ASP.NET 5 (MVC 6) Веб-приложение

Я пробовал поиск (как Google, так и SO), но кажется, что никто не имел этой проблемы (и опубликовал об этом).

Моя проблема заключается в следующем:
У меня есть простой ASP.NET MVC 5 6 приложения; в настоящее время он абсолютно ничего не делает (по коду).

У меня была пара проблем с ним раньше, но мне удалось проделать это сквозь зубы.

Эта проблема решила придерживаться на некоторое время.

Запуск приложения (либо с отладкой или с помощью команды "k web"/"k kestrel", я получаю следующее исключение:

System.Reflection.AmbiguousMatchException: Ambiguous match found. 
    at System.RuntimeType.GetMethodImpl(String name, BindingFlags bindingAttr, Binder binder, CallingConventions callConv, Type[] types, ParameterModifier[] modifiers) 
    at System.Type.GetMethod(String name, BindingFlags bindingAttr) 
    at System.Reflection.TypeInfo.GetDeclaredMethod(String name) 
    at Microsoft.AspNet.Hosting.Startup.StartupLoader.FindMethod(Type startupType, String methodName, String environmentName, Type returnType, Boolean required) 
    at Microsoft.AspNet.Hosting.Startup.StartupLoader.LoadStartup(String applicationName, String environmentName, IList`1 diagnosticMessages) 
    at Microsoft.AspNet.Hosting.Startup.StartupManager.LoadStartup(String applicationName, String environmentName) 
    at Microsoft.AspNet.Hosting.HostingEngine.EnsureApplicationStartup(HostingContext context) 
    at Microsoft.AspNet.Hosting.HostingEngine.EnsureApplicationDelegate(HostingContext context) 
    at Microsoft.AspNet.Hosting.HostingEngine.Start(HostingContext context) 
    at Microsoft.AspNet.Hosting.Program.Main(String[] args) 

Мой config.json:

{ 
    "webroot": "httpdocs", 
    "version": "1.0.0-beta3", 
    "exclude": [ 
     "httpdocs" 
    ], 
    "packExclude": [ 
     "**.kproj", 
     "**.user", 
     "**.vspscc" 
    ], 
    "dependencies": { 
     // ASP.NET: 
     "Microsoft.AspNet.Server.IIS": "1.0.0-beta3", 
     "Microsoft.AspNet.Server.WebListener": "1.0.0-beta3", 
     "Microsoft.AspNet.Mvc": "6.0.0-beta3", 
     "Microsoft.AspNet.Mvc.Razor": "6.0.0-beta3", 
     "Microsoft.AspNet.Diagnostics": "1.0.0-beta3", 
     "Microsoft.AspNet.StaticFiles": "1.0.0-beta3", 

     // "Microsoft.Framework" 
     "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta3", 
     "Microsoft.Framework.DependencyInjection": "1.0.0-beta3", 
     "Microsoft.Framework.Logging": "1.0.0-beta3", 
     "Microsoft.Framework.Logging.Console": "1.0.0-beta3", 
     "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-beta3" 

     //"System.Net.Http": "4.0.0-beta-22416", 
     //"mongocsharpdriver": "1.10.0" 
    }, 
    "commands": { 
     "web": "Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5001", 
     "kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5002" 
    }, 
    "frameworks": { 
     "aspnet50": { } 
    } 
} 

Мои Startup.cs (в основном стандарт от примера):

using System; 
using Microsoft.AspNet.Builder; 
using Microsoft.AspNet.Hosting; 
using Microsoft.Framework.ConfigurationModel; 
using Microsoft.Framework.DependencyInjection; 
using Microsoft.Framework.Logging; 
using Microsoft.Framework.Logging.Console; 
using Microsoft.AspNet.Diagnostics; 

namespace MausSite 
{ 
    public class Startup 
    { 
     public IConfiguration Configuration { get; private set; } 

     public Startup(IHostingEnvironment env) 
     { 
      Configuration = new Configuration() 
       .AddJsonFile("config.json") 
       .AddEnvironmentVariables(); 
     } 

     public void ConfigureServices(IServiceCollection services) 
     { 
      services.AddMvc(); 
     } 

     public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerfactory) 
     { 
      loggerfactory.AddConsole(); 

      // Add the following to the request pipeline only in development environment. 
      if (String.Equals(env.EnvironmentName, "development", StringComparison.OrdinalIgnoreCase)) 
      { 
       app.UseBrowserLink(); 
       app.UseErrorPage(ErrorPageOptions.ShowAll); 
      } 
      else 
      { 
       // Add Error handling middleware which catches all application specific errors and 
       // send the request to the following path or controller action. 
       app.UseErrorHandler("/Home/Error"); 
      } 

      app.UseStaticFiles(); 

      app.UseMvc(routes => 
      { 
       routes.MapRoute(
        name: "default", 
        template: "{controller}/{action}/{id?}", 
        defaults: new { controller = "Home", action = "Index" }); 
      }); 
     } 

     public void Configure(IApplicationBuilder app) 
     { 
      // For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=398940 
     } 
    } 
} 

Я в основном прокомментировал весь мой код, чтобы убедиться, что это не то, что вызывает исключение (учитывая трассировку стека, это тоже не очень похоже).

Неужели кто-то сталкивался с этим раньше или что-то подобное?
Все идеи приветствуются!

EDIT: Я использую "klr-clr-win-x86 1.0.0-beta3"/"klr-clr-win-x64 1.0.0-beta3"
ошибка повторяется на обоих.
Обновлен мой project.json.

ответ

2

Обнаружена проблема. Он был скрыт в нижней части файла: методы Configure.

Удалить второй (Configure(IApplicationBuilder app)) и все должно работать. Мы не поддерживаем перегрузки для Configure. Класс запуска может иметь только один общедоступный метод Configure.


Предыдущий ответ:

  1. добавить по крайней мере рамки раздел в project.json как hereframeworks. Поскольку вы используете mongocsharpdriver, вам нужен только aspnet50, потому что нет монго-драйвера для CoreCLR.
  2. Удалить System.Net.Http. Это не похоже на то, что ваш код нуждается в этом.

Если две вещи выше не решают проблему, сообщите нам, какую версию KLR вы используете.

+0

Я добавил 'aspnet50' в раздел фреймворков. Это не имело значения): Я использую «klr-clr-win-x86 1.0.0-beta3» Пробовал также версию x64; это не имеет значения. –

+1

См. Мой обновленный ответ –

+0

Это сделало трюк! * Большое спасибо! * –

Смежные вопросы