TestServer'ı istediğimde 404 yanıt alıyorum. Ve nedenini anlayamıyorum, çünkü normal sunucu için aynı yapılandırmayı kullanıyorum ve çalışıyor. İstekte bulunmak için TestServer.HttpClient kullanıyorum.Microsoft.Owin.Testing.TestServer 404 bulunamadı
cevap
Benim için bu, testimin test ettiği şeyi bilmemesiydi. Projenin WebApiConfig'ını testle paylaşmanın yeterince iyi olduğunu düşündüm, ancak bunların hepsi boş yönlendirme bilgileri veriyor. Deneyi test etmesi gereken şeyi söylemiyor. Yani sadece http://localhost/api/controller/action'a çıkıyor ve şimdi tarayıcınızda denediğiniz gibi bir 404 elde ediyor.
Bu eksik bağlantının nasıl kurulacağı hakkında neredeyse hiçbir şey yoktur. En yakın olan http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllers, fakat en önemli parçadan geçer - testin neyi test edeceğini söyler!
class OwinTestConf
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.Services.Replace(typeof(IAssembliesResolver), new TestWebApiResolver());
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
o TestWebApiResolver nedir:
örnek kod şöyle görünür? Eh, DefaultAssembliesResolver
'dan miras alan bir sınıf oluşturup GetAssemblies()
'u geçersiz kılarsınız. Orada test etmeye çalıştığın şeyi yüklersin. http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/
oradan iyi şeyler Copypasting senin kılma şu şekilde görünür olacak,: Burada bunun nasıl iyi bir mesaj var
'MyAssembly' montaj adıdırpublic 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;
}
}
... test etmeye çalıştığınız şeyin (sağ tıklayarak proje -> özellikler, ilk sekmenin üstündedir)
Bu engelin üstesinden gelmenizi sağlar.
İkinci engel, bu şekilde benim için bir anlaşma yaptı. Sonunda 404 olmayan bir cevabım vardı, şimdi 500 yaşındaydım. URL'leri doğru anladığımı biliyordum, çünkü onları değiştirmek biraz daha 404 yaptı. Sorun şu ki, hata ayıklamanın bir yolu yok. Test ettiğin meclise atıfta bulunduğun için, ona adım atmanın ve sınırlarını belirlemenin ve yapmanın bir yolu yok. Size neden başarısız olduğunu söyleyemeyen bir test ne kadar iyi? Özellikle sinir bozucu, IIS'de iyi çalıştı. Bu yüzden, kodumun vahşi ortamda nasıl çalışacağına dair iyi bir simülasyon olduğuna dair güvenimi kaybettim.
- 1. Sayfa bulunamadı 404 Django?
- 2. Express.js index.js 404 (Bulunamadı)
- 3. Tanımlanamayan 404 sayfa bulunamadı
- 4. Cordova hizmet diyor 404 bulunamadı
- 5. RestClient :: KaynakNotFound (404 Kaynak Bulunamadı):
- 6. Codeignitor 404 Sayfa Kayıt formu bulunamadı
- 7. GAE Golang Gorilla mux - 404 sayfa bulunamadı
- 8. ng tekrar şablonu neden 404 (Bulunamadı)
- 9. Nokogiri'de 404 bulunamadı hataları nasıl işlenir
- 10. mechanize._response.httperror_seek_wrapper: HTTP Hatası 404: Bulunamadı
- 11. PHP: Kendi 404 sayfa bulunamadı hatası
- 12. Google API: 404 Etki Alanı bulunamadı
- 13. 404 - Eclipse servlet içinde görünen kaynak bulunamadı
- 14. Http olsun 404 URL için bulunamadı: null
- 15. HTTP Hatası 404. İstenen kaynak bulunamadı. Bahar MVC
- 16. Kaynak yüklenemedi: sunucu 404 (Bulunamadı) durumuyla yanıt verdi
- 17. Kaynak yüklenemedi: sunucu, sunucudaki bir 404 (Bulunamadı) hatasıyla yanıt verdi
- 18. Azure Web Jobs Atar Azure Storage 404 Bulunamadı
- 19. Sharepoint 2013 - 404 Dışarıdan site koleksiyonuna erişirken bulunamadı
- 20. kaynakları META-INF içinde/kaynak bulunamadı ve iade 404
- 21. Bazı asp.net api özniteliği tabanlı yönlendirme geri dönüyor 404 (bulunamadı)
- 22. .htaccess, yetkisiz klasör erişimine 404 (Bulunamadı) mesajına yönlendirilecek
- 23. WebSphere Application Server 8: Hata 404: java.io.FileNotFoundException: SRVE0190E: Dosya bulunamadı:
- 24. 404 sayfaya yönlendirin veya 404 mesajını görüntülüyor musunuz?
- 25. Apache Harici Yönlendirme 404
- 26. SafariViewController'a gönderilen url, 404
- 27. 404 hatası
- 28. OmniMarkupPreviewer 404
- 29. Zend 2: Denetleyiciden 404 hatası nasıl atılır
- 30. Meteor onaylı yöntem bulunamadı
Normal sitenizde System.Web içeriği var mı (ör. MVC)? TestServer sadece OWIN bileşenleri için çalışır. – Tratcher
@Tratcher Evet, normal sunucumun denetleyicileri var, ancak TestServer onları "göremiyor" –
Bunu hiç anladın mı? Aynı konuya koşuyorum. –