From ac882ce4f5a09045ae71f8478e2daf3c8f1c1ff5 Mon Sep 17 00:00:00 2001 From: Daniel Lo Nigro Date: Wed, 22 Mar 2017 20:48:26 -0700 Subject: [PATCH] Temporary workaround for Mono incorrectly treating "Dispose" as action (https://github.com/aspnet/Routing/issues/391) --- .../BugfixApplicationModelProvider.cs | 20 +++++++++++++++++++ Daniel15.Web/Startup.cs | 5 +++++ 2 files changed, 25 insertions(+) create mode 100644 Daniel15.Web/BugfixApplicationModelProvider.cs diff --git a/Daniel15.Web/BugfixApplicationModelProvider.cs b/Daniel15.Web/BugfixApplicationModelProvider.cs new file mode 100644 index 0000000..707c56f --- /dev/null +++ b/Daniel15.Web/BugfixApplicationModelProvider.cs @@ -0,0 +1,20 @@ +using System.Reflection; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Internal; +using Microsoft.Extensions.Options; + +namespace Daniel15.Web +{ + /// + /// Temporary hack to work around https://github.com/aspnet/Routing/issues/391 + /// + public class BugfixApplicationModelProvider : DefaultApplicationModelProvider + { + public BugfixApplicationModelProvider(IOptions mvcOptionsAccessor) : base(mvcOptionsAccessor) {} + + protected override bool IsAction(TypeInfo typeInfo, MethodInfo methodInfo) + { + return methodInfo.Name != "Dispose" && base.IsAction(typeInfo, methodInfo); + } + } +} diff --git a/Daniel15.Web/Startup.cs b/Daniel15.Web/Startup.cs index f789020..9151138 100644 --- a/Daniel15.Web/Startup.cs +++ b/Daniel15.Web/Startup.cs @@ -8,9 +8,11 @@ using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting.Server.Features; using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc.ApplicationModels; using Microsoft.AspNetCore.Server.Kestrel; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Logging; using React.AspNet; @@ -42,6 +44,9 @@ public void ConfigureServices(IServiceCollection services) services.AddReact(); services.AddDaniel15(); services.AddDaniel15Config(Configuration); + + // Temporary workaround for https://github.com/aspnet/Routing/issues/391 + services.Replace(ServiceDescriptor.Transient()); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)