開発メモ ASP.NET CORE 

wwwroot配下のindex.html 静的ファイルを読み出そうとしたときにトラブったので、

とりあえずメモ。asp.net core 1.1 

Startup で UseBrowserLinkを登録していると、UseStaticFiles() で静的ファイルを読み出せるようにしているときに、 htmlファイルの呼び出しで例外が発生する。具体的には </body>の終了タグが含まれているファイルがあると、(おそらく)このタグの前に、BrowserLinkがスクリプトを挿入するために、ファイルサイズから設定していたContent-Lengthと実際のContent-Lengthが一致しなくなり、例外が発生してしまう。

画像やjavascriptのファイルは問題なく呼び出せる。

 

まずは、UseBrowserLinkをコメントアウトしたら、例外が出なくなったので、問題を切り分けることができた。

最終的には、UseStaticFiles()のあとで、UseBrowserLink()を設定することで解決できた。静的ファイルと判断されたときはその場でミドルウェアの処理が終了するから、後の処理だと影響しない

 

 

Startup.cs

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory,ShopDbContext db)
{
//db.Database.MigrateAsync();

loggerFactory.AddConsole(Configuration.GetSection("Logging"));
loggerFactory.AddDebug();

if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseDatabaseErrorPage();
//app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}

app.UseStaticFiles();

if(env.IsDevelopment())
{
app.UseBrowserLink();
}

app.UseIdentity();

// Add external authentication middleware below. To configure them please see http://go.microsoft.com/fwlink/?LinkID=532715

app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}

 

 

 

"dependencies": {
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.EntityFrameworkCore.Tools": "1.1.0-preview4-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.VisualStudio.Web.CodeGenerators.Mvc": {
"version": "1.0.0-preview2-final",
"type": "build"
},

"BundlerMinifier.Core": "2.2.306",
"Microsoft.AspNetCore.Server.Kestrel": "1.1.0",
"Microsoft.AspNetCore.StaticFiles": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer": "1.1.0",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.1.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.1.0",
"Microsoft.Extensions.Configuration.Json": "1.1.0",
"Microsoft.Extensions.Configuration.UserSecrets": "1.1.0",
"Microsoft.Extensions.Logging": "1.1.0",
"Microsoft.Extensions.Logging.Console": "1.1.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.1.0",
"Microsoft.AspNetCore.Authentication.Cookies": "1.1.0",
"Microsoft.AspNetCore.Diagnostics": "1.1.0",
"Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0",
"Microsoft.AspNetCore.Identity.EntityFrameworkCore": "1.1.0",
"Microsoft.AspNetCore.Mvc": "1.1.0",
"Microsoft.AspNetCore.Routing": "1.1.0",
"Microsoft.AspNetCore.Server.IISIntegration": "1.1.0",
"Microsoft.Extensions.Logging.Debug": "1.1.0",
"Microsoft.NETCore.App": {
"version": "1.1.0",
"type": "platform"
}