Wenn ich Anfrage an TestServer erhalte, bekomme ich 404 Antwort. Und ich kann nicht verstehen, warum, weil ich die gleiche Konfiguration für den normalen Server verwende und es funktioniert. Um Anfragen zu stellen, benutze ich TestServer.HttpClient.Microsoft.Owin.Testing.TestServer 404 nicht gefunden
Antwort
Für mich war es, dass mein Test nicht wusste, was es getestet wurde. Ich dachte, es sei gut genug, um die WebApiConfig des Projekts mit dem Test zu teilen, aber es gibt nur leere Routing-Informationen. Es sagt dem Test nicht, was er testen soll. Es geht also nur um http://localhost/api/controller/action und eine 404 die gleiche wie wenn Sie es jetzt in Ihrem Browser versucht.
Es gibt fast nichts, wie man diese fehlende Verbindung herstellen kann. Der nächste ist http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllers, aber es gloss über den wichtigsten Teil - wie man dem Test was zu testen!
Der Beispielcode sieht wie folgt aus etwas:
class OwinTestConf
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.Services.Replace(typeof(IAssembliesResolver), new TestWebApiResolver());
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
Was ist das TestWebApiResolver? Nun, Sie machen eine Klasse, die von DefaultAssembliesResolver
erbt und dann überschreiben GetAssemblies()
. Dort laden Sie das, was Sie testen wollen. Es gibt einen guten Beitrag, wie Sie dies hier tun: http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/
von dort die guten Sachen Copypasting, Überschreibung wie folgt aussehen wird:
public class MyAssembliesResolver : DefaultAssembliesResolver
{
public override ICollection<Assembly> GetAssemblies()
{
ICollection<Assembly> baseAssemblies = base.GetAssemblies();
List<Assembly> assemblies = new List<Assembly>(baseAssemblies);
var controllersAssembly = Assembly.Load("MyAssembly");
baseAssemblies.Add(controllersAssembly);
return assemblies;
}
}
... where ‚MyAssembly‘ der Assemblierung-Name ist der Sache, die du versuchst zu testen (Rechtsklick auf das Projekt -> Eigenschaften, es ist oben auf der ersten Registerkarte)
Das bringt dich über diese Hürde.
Die zweite Hürde machte das Testen auf diese Weise zu einem Deal-Breaker für mich. Ich hatte schließlich eine 404-Antwort, jetzt war es eine 500. Ich wusste, dass ich die URLs richtig hatte, weil sie leicht geändert 404 wieder gemacht wurden. Das Problem ist, dass es keine Möglichkeit gibt, das zu debuggen. Da Sie nur auf die Assembly verweisen, die Sie testen, können Sie nicht darauf zugreifen und Breakpoints setzen und was nicht. Was nützt ein Test, der dir nicht sagen kann, warum er versagt? Besonders ärgerlich ist, dass es in IIS gut funktioniert hat. Daher habe ich das Vertrauen verloren, dass dies eine gute Simulation dafür ist, wie mein Code in der Wildnis laufen wird.
- 1. ScriptResource.axd 404 nicht gefunden
- 2. Seite nicht gefunden (404)
- 3. 404 Seite nicht gefunden
- 4. Winkelrouten-Vorlage nicht gefunden 404
- 5. Python Seite 404 nicht gefunden
- 6. Http 404: Nicht gefunden (WebException)
- 7. AngularJS GET 404 nicht gefunden
- 8. POST gibt 404 nicht gefunden
- 9. HTTP POST 404 nicht gefunden
- 10. Wordpress permalinks 404 nicht gefunden
- 11. Express.js index.js 404 (nicht gefunden)
- 12. JS Dateien nicht gefunden (404)
- 13. Seite nicht gefunden 404 Django?
- 14. ASP.NET Custom 404 Rückgabe 200 OK statt 404 Nicht gefunden
- 15. RestClient :: ResourceNotFound (404 Ressource nicht gefunden):
- 16. Restler gibt immer zurück 404: Nicht gefunden
- 17. Zugriffsfehler: 404 - nicht gefunden - CNR WebGUI
- 18. RNeo4j Fehler: Clientfehler: (404) Nicht gefunden
- 19. 404 Nicht in Autovervollständigung in Laravel gefunden
- 20. 404 Seite nicht gefunden codeigniter url - php
- 21. WooCommerce API Return 404 nicht gefunden
- 22. XHR Fehler (404) nicht gefunden Winkel 2
- 23. Karma-Coverage immer 404 nicht gefunden Antwort
- 24. Spring Websocket bekommen 404 nicht gefunden
- 25. mechanize._response.httperror_seek_wrapper: HTTP-Fehler 404: Nicht gefunden
- 26. influxdb Python: 404 Seite nicht gefunden
- 27. NG2-ckeditor 404 (nicht gefunden) angular2
- 28. Laravel 4.2 + nginx 404 Datei nicht gefunden
- 29. Fehler: XHR-Fehler (404 nicht gefunden) loading
- 30. Jquery Ajax zurück 404 nicht gefunden
Hat Ihre normale Site auch System.Web-Inhalte (z. B. MVC)? TestServer funktioniert nur für die OWIN-Komponenten. – Tratcher
@Tratcher Ja, mein normaler Server hat Controller, aber der Testserver "sieht" sie nicht –
Haben Sie das jemals herausgefunden? Ich stoße auf dasselbe Problem. –