私がTestServerにリクエストをすると、私は404応答を取得します。そして、なぜ私は正常なサーバーのために同じ設定を使用し、それが動作する理由を理解できません。要求を行うために私はTestServer.HttpClientを使います。Microsoft.Owin.Testing.TestServer 404が見つかりません
答えて
私のテストでは、テストしていたものがわからないということでした。プロジェクトのWebApiConfigをテストと共有するだけで十分だと思いましたが、空のルーティング情報を与えるだけです。それはテストするものをテストに伝えません。だから、http://localhost/api/controller/actionに行って、ブラウザで試したのと同じように404を取得するだけです。
この欠落している接続を確立する方法はほとんどありません。一番近いのは http://www.juliencorioland.net/archives/using-owin-to-test-your-web-api-controllersですが、テストの内容をどのようにテストするかについては、最も重要な部分について説明します。
のコード例は、このようなものになります。
class OwinTestConf
{
public void Configuration(IAppBuilder app)
{
HttpConfiguration config = new HttpConfiguration();
config.Services.Replace(typeof(IAssembliesResolver), new TestWebApiResolver());
config.MapHttpAttributeRoutes();
app.UseWebApi(config);
}
}
をそのTestWebApiResolverは何ですか?さて、DefaultAssembliesResolver
から継承したクラスを作成し、次にGetAssemblies()
を上書きします。そこにテストしようとしているものがロードされます。ここでこれを行う方法の良い記事があります。そこから良いものをCopypasting http://www.strathweb.com/2013/08/customizing-controller-discovery-in-asp-net-web-api/
、あなたのオーバーライドは、このように見えるように起こっている:
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;
}
}
...「MyAssemblyは、」アセンブリ名です(プロジェクトを右クリック - >プロパティ、それは最初のタブの上部にあります)
これは、そのハードルを乗り越えます。
第2のハードルは、このようにして私にとってデッドブレイカーをテストしました。私はついに404レスポンスを得ました。今は500でした。URLを変更したので、私はそれを少し変更したので、私は正しいと思っていました。問題はそれをデバッグする方法がないことです。テストしているアセンブリを参照しているだけなので、ブレークポイントを設定したり、ブレークポイントを設定したりすることはできません。なぜそれが失敗しているのか分からないテストは何ですか?特に厄介なことは、IISで正常に動作していることです。だから私はこれが私のコードが野生でどのように動くかの良いシミュレーションであるという信頼を失ってしまった。
- 1. 404ページが見つかりません
- 2. 404 node_modulesが見つかりません
- 3. ページが見つかりません(404)
- 4. Socket.io 404が見つかりません
- 5. Python:urllib.error.HTTPError:HTTPエラー404:見つかりません
- 6. WSGIアプリケーション見つかりません - 404
- 7. 404ページが見つかりません画像を見るLaravel
- 8. 404が見つかりません - BLOBのdiffパラメータの1つが見つかりません
- 9. 404が見つかりません "要求されたURLが見つかりませんでした"
- 10. 404が見つかりません。要求されたURLがウェブサイトに見つかりません
- 11. 404が見つかりませんでしたファイルが見つかりませんMVC
- 12. 404ページが見つかりません要求したページが見つかりませんでした。 codeigniter
- 13. Codeigniter - サーバーエラー - 404 - ファイルまたはディレクトリが見つかりません
- 14. イメージパスが404エラーを返します(見つかりません)
- 15. FCGIのステータス:404が見つかりませんでしたか?
- 16. Grails - 404ファイルが見つかりません - なぜですか?
- 17. htaccess 404に問題が見つかりませんか?
- 18. ApacheがDjangoにリクエストを渡しません(404が見つかりません)
- 19. ngのリピートテンプレートが原因404(見つかりません)
- 20. Nokogiriで404エラーが見つかりませんでした。
- 21. 展開.NET RESTサービス - ページが見つかりません - 404エラー
- 22. MVC 4 - LogOffコントローラのアクション404が見つかりません
- 23. 404要求したドキュメントが見つかりません
- 24. POSTアヤックスリクエストで404エラーが見つかりませんLaravel 5.2
- 25. 角度ルーティング:ウェブサーバで404が見つかりません
- 26. Google API:404ドメインが見つかりません
- 27. Joomla "404カテゴリが見つかりません"エラー
- 28. オーチャードCMS:リソースが404(見つかりません)
- 29. Azureエラー404 - Webアプリケーションが見つかりません
- 30. TYPO3:Windows上のRealURL(404が見つかりません)
通常のサイトにもSystem.Webコンテンツ(MVCなど)がありますか? TestServerは、OWINコンポーネントでのみ動作します。 – Tratcher
@Tratcherはい、私の通常のサーバーにはコントローラがありますが、TestServerはそれらを「見」ません –
これを解明しましたか?私は同じ問題を抱えています。 –