<p>Feedback zu Nancy 2.0.0-clinteastwood</p>

Erstellt am 22. Dez. 2016  ·  8Kommentare  ·  Quelle: NancyFx/Nancy

Wenn Sie Probleme finden, öffnen Sie bitte ein Problem und geben Sie so viele Informationen wie möglich an, damit wir Ihr Problem identifizieren können. Alternativ können Sie gerne eine Pull-Anfrage einreichen, wenn Sie glauben, dass Sie zur Lösung des Problems beitragen können. Wenn Sie eine Anleitung benötigen, wie Sie mit Pull-Requests beginnen können, werfen Sie bitte einen Blick auf unsere Beitragsrichtlinien . Achtet darauf, dass ihr die Stilrichtlinien nicht verpasst, das werde ich nicht tun :D

HINWEIS: Da es sich bei Nancy 2.0-clinteastwood um eine Vorabversion handelt, müssen Sie Pakete mit dem Schalter -pre installieren, dh install-package Nancy -pre

Bitte verwenden Sie dieses Problem, um Kommentare zu posten, die nicht direkt mit einem bestimmten gemeldeten Fehler oder Pull-Request zusammenhängen.

MACHEN

Im Folgenden finden Sie eine Liste identifizierter Aufgaben, die nach der Veröffentlichung von 2.0.0-clinteastwood durchgeführt werden müssen und vor der Veröffentlichung 2.0.0-dangermouse abgeschlossen sein sollten. Bearbeiten Sie die TODO-Liste und fügen Sie gefundene Elemente hinzu, fügen Sie Links zu Pull-Requests hinzu, die gesendet werden, um sie zu schließen

  • [x] Stellen Sie sicher, dass AsyncUsageAnalyzers in allen project.json und packages.config auf eine Build-Abhängigkeit gesetzt ist. Korrektes Beispiel zum Spiegeln hier – (Pull Request #2700 @jchannon
  • [x] Entfernen Sie alle alten *.nuspec -Dateien in allen Projekten (einschließlich Nancy) (Pull-Request #2658 @jchannon)
  • [x] Nancy.Hosting.Aspnet\project.json aktualisieren, um web.config.transform in das Paket aufzunehmen (Pull-Request #2661 @thecodejunkie)
  • [x] Nancy.ViewEngines.Razor\project.json aktualisieren, um app/web.config.transform in das Paket aufzunehmen (Pull-Request #2661 @thecodejunkie)
  • [ ] Aktualisieren Sie Nancy.ViewEngines.Razor\project.json , um Nancy.ViewEngines.Razor.BuildProvider (einschließlich Build-Ziele) in das Paket aufzunehmen

Geplante Änderungen

  • [ ] Entfernen Sie eines von Request.Cookies und Request.Headers.Cookie , siehe #2628 für Diskussionen
  • [ ] Verbesserung der Vorher- und Nachher-Hook-Syntax und -Fähigkeiten #2665
  • [ ] Sehen Sie sich "Potential Performance Problem with Nancy.Routing.Route.Invoke #2623" an
  • [ ] Konfigurationsunterstützung für die Inhaltsverhandlung hinzufügen. Siehe #2671 für eine Diskussion über die automatische Erweiterungsauflösung
  • [ ] Testinfrastruktur aktualisieren, um netstandard zu unterstützen, siehe Issue #2612 und Pull-Request #2628
  • [ ] Verbleibende Subsysteme auf asynchron umwandeln, siehe Pull-Request #2577
  • [ ] Entfernen Sie die letzten verbleibenden Teile von StaticConfiguration

Bekannte Einschränkungen

  • Einige Pakete können AsyncUsageAnalyzers als Abhängigkeit installieren. Dies sollte sicher entfernt werden können und wird nicht in 2.0.0-dangermouse enthalten sein, da es in allen Projekten als Build-Abhängigkeit gekennzeichnet wird
  • Das Nancy.Hosting.Aspnet -Paket wendet keine *.config -Transformationen an, um das Hosting zu verkabeln, müssen Sie es selbst anwenden
  • Das Nancy.ViewEngines.Razor -Paket wendet keine *.config -Transformationen an, um die Konfigurationsoptionen der View-Engines zu verbinden, Sie müssen es selbst anwenden
  • Die Buildanbieter für Nancy.ViewEngines.Razor fehlen im NuGet-Paket, was zu Problemen mit der Syntaxhervorhebung in Nancy Razor-Ansichten führt
Improvement Epic

Hilfreichster Kommentar

Das liegt daran, dass das Basismodul keinen Konstruktor hat, den der IoC-Container erfüllen kann. Es weiß nicht, wie es mit string umgehen soll. Wenn das BaseModule nicht alleine heißen soll, schlage ich vor, dass Sie es abstract machen ...

Alle 8 Kommentare

Dies wird kompiliert, wirft aber eine Laufzeit NullReferenceException :

pipelines.BeforeRequest.AddItemToStartOfPipeline((ctx, _) =>
{
    // do stuff
    // Func<NancyContext, Response>, Func<NancyContext, CancellationToken, Response>
    return null;
});

Das funktioniert:

pipelines.BeforeRequest.AddItemToStartOfPipeline((ctx, _) =>
{
    //do stuff
    // Func<NancyContext, CancellationToken, Task<Response>>
    return Task<Response>.FromResult((Response)null);
});

Es hat ein bisschen gedauert, meinen Kopf gegen die Wand zu schlagen, bis ich es herausgefunden habe, was weder super-duper noch glücklich ist.

@danbarua danke. Ich habe https://github.com/NancyFx/Nancy/issues/2665 geöffnet, weil ich das Pipeline-Zeug überholen möchte, sobald wir die Zeit hatten, uns den Bootstrapper anzusehen (was bald geschehen wird Ich habe uns auf das neue csproj-Format umgestellt und das passiert jetzt in #2720)

Yak-Rasur! 😄

Dieser Code löst eine Ausnahme aus, ist das ein Fehler?

```C#

öffentliche Klasse BaseModule : NancyModule
{
public BaseModule(string url) : base(url)
{
//Benutzerdefinierte Logik
}
}

öffentliche Klasse A: BaseModule
{
public A() : base("urlA")
{

}

}

öffentliche Klasse B: NancyModule
{
öffentlich B()
{

}

}


System.InvalidOperationException ist aufgetreten
HResult=0x80131509
Message=Beim Versuch, eine der Abhängigkeiten während der Komposition zu erfüllen, ist etwas schief gelaufen. Stellen Sie sicher, dass Sie alle neuen Abhängigkeiten im Container registriert haben, und untersuchen Sie die innereException auf weitere Details.
Quelle=
StackTrace:
bei Nancy.Bootstrapper.NancyBootstrapperBase 1.SafeGetNancyEngineInstance() at Nancy.Bootstrapper.NancyBootstrapperBase 1.GetEngine()
bei Nancy.Owin.NancyMiddleware.UseNancy(NancyOptions-Optionen)
bei Nancy.Owin.DelegateExtensions.UseNancy(Action 1 builder, NancyOptions options) at PiggyBank.Site.Startup.<>c.<Configure>b__2_0(Action 1 x) in E:visual_studiopiggy-banksourcePiggyBank.SiteStartup.cs:line 31
bei Microsoft.AspNetCore.Builder.OwinExtensions.UseOwin (IApplicationBuilder Builder, Action`1-Pipeline)
bei PiggyBank.Site.Startup.Configure (IApplicationBuilder App, IHostingEnvironment env, ILoggerFactory loggerFactory) in E:visual_studiopiggy-banksourcePiggyBank.SiteStartup.cs:line 31

Innere Ausnahme 1:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: Nancy.NancyEngine

Innere Ausnahme 2:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: Nancy.Routing.DefaultRequestDispatcher

Innere Ausnahme 3:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: Nancy.Routing.DefaultRouteResolver

Innere Ausnahme 4:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: Nancy.Routing.RouteCache

Innere Ausnahme 5:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: BaseModule

Innere Ausnahme 6:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: System.String

Innere Ausnahme 7:
TinyIoCResolutionException: Typ kann nicht aufgelöst werden: System.Char[]

Innere Ausnahme 8:
ArgumentNullException: Der Wert darf nicht null sein.

```

Das liegt daran, dass das Basismodul keinen Konstruktor hat, den der IoC-Container erfüllen kann. Es weiß nicht, wie es mit string umgehen soll. Wenn das BaseModule nicht alleine heißen soll, schlage ich vor, dass Sie es abstract machen ...

Alt:

Get["post/{id}"] = Get["old/post/{id}"] = p =>{};

Neu (2.0):

?

Get("post/{id}", MyMethod);
Get("old/post/{id}", MyMethod);

Get("post/{id}", MyMethod);
Get("old/post/{id}", MyMethod);

Diese Verwendung fügt eine gewisse Indirektion hinzu. Ich persönlich mag das nicht. Kein Problem.

Vielleicht ist es möglich, einige Methodenüberladungen für fließende Ausdrücke zu haben? Beispiel:

Get("post/{id}")
.Get("old/post/{id}")
.Post("whatever/{id}", p => { return HttpStatusCode.Ok });

Ein alternativer Ausdruck

Get("post/{id}")
.Get("old/post/{id}")
.Post("whatever/{id}")
.Do(p => { return HttpStatusCode.Ok });

Ich kann es mit PR versuchen, wenn dies wünschenswert ist

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen