Mik*_*eon 11 typescript asp.net-core
我应该如何在ASP.NET 5中调试TypeScript文件?假设解决方案布局如下图所示.注意.ts脚本在wwwroot文件夹之外,编译的.js文件通过Grunt任务到达那里.该任务还会创建引用原始.ts文件的.map文件.
但请注意,引用在wwwroot(../Scripts/app.ts)之外.这显然不适用于浏览器.
任何的想法?

ste*_*tef 13
我仍然在Visual Studio 2015 Update 1中遇到完全相同的问题.我使用Startup.cs中的以下代码片段解决了这个问题:
public void Configure(IApplicationBuilder app, IHostingEnvironment env, IApplicationEnvironment appEnv)
{
app.UseStaticFiles();
if (env.IsDevelopment())
{
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(System.IO.Path.Combine(appEnv.ApplicationBasePath, "App")),
RequestPath = new PathString("/App"),
});
}
}
Run Code Online (Sandbox Code Playgroud)
我的所有TypeScript文件都在/ App下
ASP.Net Core 版本的更新以获得一个好的 stef 答案(现在无法编译):
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseFileServer(new FileServerOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Scripts")),
RequestPath = new PathString("/app"),
});
}
}
Run Code Online (Sandbox Code Playgroud)
我将以下操作添加到我的控制器之一,其中appEnvironment已IApplicationEnvironment注入到您的控制器中:
#if DEBUG
[ExcludeFromCodeCoverage]
[Route("Scripts/{*pathInfo}", Order = 500)]
public IActionResult TestTypescript(string pathInfo, System.Threading.CancellationToken cancellationToken)
{
var path = appEnvironment.ApplicationBasePath + "/Scripts/" + pathInfo;
if (System.IO.File.Exists(path) && pathInfo.EndsWith(".ts"))
{
return File(path, "application/javascript");
}
else
{
return HttpNotFound();
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
方便的是,新的 Web 服务器删除了 ../ (我假设是出于安全目的),因此您甚至不必担心它们出现在路由中。[RoutePrefix](请注意,控制器本身不需要具有属性才能使这些路径发挥作用。)
| 归档时间: |
|
| 查看次数: |
1514 次 |
| 最近记录: |