Często cytowane odniesienie do kompatybilności frameworków to an extension method build by Thinktecture for supporting their IdentityServer3 on ASP.NET 5.
Ta metoda jest specyficzna dla serwera tożsamości i nie obsługuje żądania przetwarzanego przez żadne oprogramowanie pośredniczące zarejestrowane później w rurociągu AspNet (nie wywołuje następnego komponentu).
ten dostosowuje metodę do rozwiązania tych niedociągnięć:
internal static class IApplicationBuilderExtensions
{
public static void UseOwin(
this IApplicationBuilder app,
Action<IAppBuilder> owinConfiguration)
{
app.UseOwin(
addToPipeline =>
{
addToPipeline(
next =>
{
var builder = new AppBuilder();
owinConfiguration(builder);
builder.Run(ctx => next(ctx.Environment));
Func<IDictionary<string, object>, Task> appFunc =
(Func<IDictionary<string, object>, Task>)
builder.Build(typeof(Func<IDictionary<string, object>, Task>));
return appFunc;
});
});
}
}
Może być stosowany w sposób następujący:
app.UseOwin(
owin =>
{
// Arbitrary IAppBuilder registrations can be placed in this block
// For example, this extension can be provided by
// NWebsec.Owin or Thinktecture.IdentityServer3
owin.UseHsts();
});
// ASP.NET 5 components, like MVC 6, will still process the request
// (assuming the request was not handled by earlier middleware)
app.UseMvc();
Nie rozumiem pełnych implikacji, ale to działa i wydaje się, że może być bardziej niezawodne z powodu dodatkowych przydziałów nieruchomości. Aby upewnić się, że czegoś nie brakuje, ta implementacja wymaga również odniesienia do 'Microsoft.Owin', czyniąc implementacje identycznymi pod tym względem? – vossad01
Oczywiście zależy to od AppBuilder, który jest częścią Microsoft.Owin. Próbujesz go naprawić, aby uniknąć odwoływania się do firmy Microsoft.Owin byłby fajnym ćwiczeniem, ale nie jestem pewien, czy byłby tego wart, ponieważ nadal musiałbyś portować oprogramowanie pośredniczące OWIN/Katana, które chciałbyś użyć do Core CLR. – Pinpoint
uszkodzony link .... –