using Microsoft.Owin; using Microsoft.Owin.StaticFiles; using Owin; using System.Web.Http; using VNCServerList.Web.Controllers; namespace VNCServerList.Web { public class Startup { public void Configuration(IAppBuilder app) { // Web API 설정 var config = new HttpConfiguration(); // 라우팅 설정 config.MapHttpAttributeRoutes(); config.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParameter.Optional } ); // JSON 포맷터 설정 config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore; // 파일 업로드 설정 config.Formatters.Remove(config.Formatters.XmlFormatter); app.UseWebApi(config); // 정적 파일 서빙 설정 var options = new FileServerOptions { EnableDefaultFiles = true, DefaultFilesOptions = { DefaultFileNames = { "index.html" } }, FileSystem = new Microsoft.Owin.FileSystems.PhysicalFileSystem("Web/wwwroot") }; app.UseFileServer(options); // 캐시 방지 미들웨어 추가 app.Use(async (context, next) => { if (context.Request.Path.Value.EndsWith(".js") || context.Request.Path.Value.EndsWith(".css")) { context.Response.Headers["Cache-Control"] = "no-cache, no-store, must-revalidate"; context.Response.Headers["Pragma"] = "no-cache"; context.Response.Headers["Expires"] = "0"; } await next(); }); } } }