gpt4 book ai didi

c# - NancyFX 立即反射(reflect)静态内容的变化

转载 作者:可可西里 更新时间:2023-11-01 08:39:40 25 4
gpt4 key购买 nike

在 ASP.NET 中,每当我从 VS2012 以 Debug模式运行我的服务器时,我对静态内容(js、css 等)所做的任何更改都会在保存时立即反射(reflect)出来。

在 NancyFX 中,我每次更改静态内容时都需要重新启动服务器。我假设这是因为每次运行服务器时 VS 都需要将静态内容复制到输出目录。

有没有办法在保存时立即反射(reflect)对静态内容所做的更改?

这是我的静态内容配置

public class MainBootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureConventions(NancyConventions nancyConventions)
{
nancyConventions.StaticContentsConventions.Add(StaticContentConventionBuilder.AddDirectory("Scripts"));
base.ConfigureConventions(nancyConventions);
}
}

这可能也是相关的。我在控制台应用程序下运行它,其中 nancyfx 主循环如下所示:

class Program
{
const ushort port = 64402;
const string escapeString = "/Terminate";

static void Main(string[] args)
{
NancyHost host;

#region Making new instance of NancyHost
var uri = new Uri("http://localhost:" + port + "/");
var config = new HostConfiguration(); config.UrlReservations.CreateAutomatically = true;

host = new NancyHost(config, uri);
#endregion
#region NancyFX hosting loop
try
{
host.Start();

Console.Write("Start hosting the Fate/Another ranking system frontend\n" +
"\t\"" + uri + "\"\n" +
"To stop the hosting, input \"" + escapeString + "\".\n\n");
do Console.Write("> "); while (Console.ReadLine() != escapeString) ;
}
catch (Exception e)
{
Console.WriteLine("Unhandled exception has been occured!\n"
+ e.Message);
Console.ReadKey(true);
}
finally
{
host.Stop();
}

Console.WriteLine("Goodbye");
#endregion
}
}

如果您想知道为什么我不使用 Nancy.ASPNET.hosting,这将在带有 nginx 的 ubuntu 下运行

最佳答案

Nancy 的默认根路径是应用程序的 bin 文件夹。如果您希望在刷新后反射(reflect) Assets 更新而不需要重建,您可以使用自定义 Nancy.IRootPathProvider,您可以执行如下操作:

public class NancyCustomRootPathProvider : IRootPathProvider
{
public string GetRootPath()
{
#if DEBUG
return Directory.GetParent(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location)).FullName;
#else
return Path.GetDirectoryName(Assembly.GetEntryAssembly().Location);
#endif
}
}

这还允许生产构建直接从它们的 bin 目录提供服务,就像部署应用程序时的情况一样。

关于c# - NancyFX 立即反射(reflect)静态内容的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com