簡略化されたStartup
コード:
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "",
defaults: new { controller = "Main", action = "Index" });
});
}
Visual Studio 2015でアプリケーションを実行した後、ブラウザーに「localhost:xxx」と表示されますが、MainController.Index()の結果は表示されません。空白のページ。私は何を取りこぼしたか?
更新:
Web.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false"/>
</system.webServer>
</configuration>
更新2:
問題は、コントローラーに依存性を注入したサービスの例外に起因します。開発者の例外ページサイトを使用するのを忘れたため、空白のページが返されました。間違った質問で申し訳ありませんが、私の場合はルーティングは問題ありません。
routes.MapRoute(
name: "default",
template: "{controller}/{action}/{id?}",
defaults: new { controller = "Main", action = "Index" });
routes.MapRoute(
name: "default",
template: "{controller=Main}/{action=Index}/{id?}");
これは、デフォルトルートを定義する2つの方法です。あなたはそれらを混ぜています。 テンプレートを常に定義する必要があります。 2番目の方法では、テンプレートに直接デフォルトを書き込むことができます。
Startup.csクラスで、便利なメソッドを使用します:UseMvcWithDefaultRoute():
public void Configure(IApplicationBuilder app, IHostingEnvironment
{
app.UseMvcWithDefaultRoute();
}
変更に使用できます:
public void Configure(IApplicationBuilder app, IHostingEnvironment
{
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
}
詳細は Microsoftドキュメント
空白のページを取得するすべてのユーザーに対して、PreserveCompilationContextをtrueに設定します。
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<PreserveCompilationContext>true</PreserveCompilationContext>
</PropertyGroup>
vs 2017のcsprojまたは
"buildOptions": { "preserveCompilationContext": true }
project.jsonで