我有一个带有IIS 8.0的Windows Server 2012.它托管了许多用户群较少的小型网站,这些网站在任何方面都不是关键任务.对于小型网站,我的意思是应用程序代码和内存占用量非常低,但由于加载的库(如EntityFramework),应用程序的内存消耗在新启动和空闲时大约为140MB.
一般来说,这对于一个成熟的网络服务器来说并不是什么大不了的事,但我只有一个带有4GB内存的VPS,它还可以运行其他几个应用程序(数据库,BIND,hMail等).我正在使用它作为开发服务器来使用许多不同的技术.因此,我在服务数十个~140MB w3wp时快速耗尽RAM.
除了在空闲时暂停,我还想减少内存消耗,同时仍然使用我想要使用的任何框架或库 - 这实际上是整个事情的目的.
简而言之:由于应用程序不仅共享相同的.NET版本,而且还有一些像EF或MVC这样的库,在一个app_pool中运行多个站点以便它们可以共享库更有意义吗?或者,无论如何,每个站点都会加载自己的副本(由于此处讨论的不同的应用程序域)?
奖金问题:在考虑硬件升级时,1GB的RAM是20美元/月,但是将整个服务器放在SSD上是10美元/月.虽然我知道从页面文件中读取总是比从RAM中读取要慢得多但我正在考虑在SSD上使用大页面文件而不是以两倍的价格购买1g的额外RAM - 再次,网站的速度不是关键,他们应该工作.这有什么意义吗?
我正在尝试调用TypeScript类的实例方法(在ASP.NET MVC项目中).但是,在运行时我会遇到异常0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'checkString'.
我在jsfiddle中复制了生成的JavaScript,其中方法似乎有效.
我不是一个真正的JavaScript人,所以非常感谢任何帮助!
到目前为止我尝试过的事情:
Uncaught TypeError: undefined is not a function,FF: TypeError: this.checkString is not a function)这是TypeScript代码:
class FormData {
BlogName: string;
CacheTimeOut: number;
CopyrightHolder: string;
NavBarTitle: string;
MarkdownExtra: boolean;
MarkdownSanitize: boolean;
RatingActive: boolean;
HtmlEditor: boolean;
constructor(blogName: string, cacheTimeOut: number, copyrightHolder: string, navBarTitle: string, markdownExtra: boolean, markdownSanitize: boolean, ratingActive: boolean, htmlEditor: boolean) …Run Code Online (Sandbox Code Playgroud) 我有一个运行Redis服务器的远程Linux机器,在开放端口上进行监听.我想加密流量,但Redis不支持SSH.建议的解决方案是使用SSH隧道,但我对此没有多少经验.
我尝试将RedisClient(ServiceStack.Redis)对象连接到通过SSH(SSH.NET)隧道转发到远程linux盒的本地端口:
static void Main(string[] args)
{
using (var client = new SshClient("example.org", "sshuser", "sshpassword"))
{
client.Connect();
var port = new ForwardedPortLocal("localhost", 1234, " example.org ", 1234);
client.AddForwardedPort(port);
port.Exception += (sender, e) => Console.WriteLine(e.Exception.ToString());
port.Start();
using (var redisClient = new RedisClient("localhost", 1234, "redispassword"))
{
var values = redisClient.As<string>();
const string dansFord = "Dan's Ford Mustang";
values.Store(dansFord);
Console.WriteLine("Redis has " + values.GetAll().Count + " entries");
values.GetAll().ToList().ForEach(Console.WriteLine);
}
Console.ReadLine();
port.Stop();
client.Disconnect();
}
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为RedisClient无法连接到localhost上的不存在的服务器,并且转发似乎不起作用.我的问题是:
我无法应用任何操作系统级别的调整,因此解决方案应该是纯达4.5.1的.NET.这里发布的解决方案需要一个商业图书馆,而我必须依赖免费的.
谢谢!
为了异步运行代码(例如使用async/await),我需要一个合适的Task.当然,框架中有几种预定义的方法可以覆盖最频繁的操作,但有时我想编写自己的方法.我是C#的新手,所以很可能我做错了,但我至少对我目前的做法并不满意.请参阅以下示例了解我正在做的事情:
public async Task<bool> doHeavyWork()
{
var b1 = await this.Foo();
//var b2 = await Task<bool>.Factory.StartNew(Bar); //using Task.Run
var b2 = await Task.Run(()=>Bar());
return b1 & b2;
}
public Task<bool> Foo()
{
return Task.Factory.StartNew(() =>
{
//do a lot of work without awaiting
//any other Task
return false;
});
}
public bool Bar()
{
//do a lot of work without awaiting any other task
return false;
}
Run Code Online (Sandbox Code Playgroud)
一般来说,我创建和使用像Foo示例这样的方法,但是有一个'额外'的lambda包含整个方法逻辑,看起来不是很漂亮.另一个选择是使用任何方法,如Bar示例,但是我认为这更糟糕,因为不清楚这个方法应该运行async(除了正确的方法名称,如BarAsync)和Task.Factory.StartNew可能必须在程序中重复几次.我不知道如何告诉编译器'这个方法返回一个Task,请在调用时将它作为一个整体包装成'我想做的事.
最后我的问题是:编写这种方法的最佳方法是什么?我可以摆脱'额外'lambda(当然不添加额外的命名方法)吗?
编辑 正如Servy所说,总有充分的理由拥有该方法的同步版本.只有在absolutley必要时才应提供异步版本(Stephen Cleary的链接).
我试着按照davidgyoung在这个问题中提供的步骤.以下是我使用的命令:
hciconfig hci0 up
hciconfig hci0 noleadv
hcitool -i hci0 cmd 0x08 0x0008 48 45 4c 4c 4f 57 4f 52 4c 44
hciconfig hci0 leadv
Run Code Online (Sandbox Code Playgroud)
这给了我这个输出:
LE set advertise enable on hci0 returned status 12
< HCI Command: ogf 0x08, ocf 0x0008, plen 10
48 45 4C 4C 4F 57 4F 52 4C 44
> HCI Event: 0x0e plen 4
01 08 20 12
Run Code Online (Sandbox Code Playgroud)
请注意,我不能使用advice命令,hciconfig hci0 leadv 0因为它会抛出错误Warning: unknown command - "0".
但是,当我尝试 …
我正在尝试为我的ASP.NET MVC 5项目设置一些路由.
现在我有一些奇怪的行为:
/Home/About 正确路由 /Home/Index 被路由到 /XmlRpc?action=Index&controller=Blog /HOme/Index 工作(是的,我发现由于一个错字) - 我一直认为路由不区分大小写?Url.Action("Foo","Bar")也创造/XmlRpc?action=Foo&controller=Bar这是我的RouteConfig档案:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.Add("XmlRpc", new Route("XmlRpc", new MetaWeblogRouteHandler()));
routes.MapRoute("Post", "Post/{year}/{month}/{day}/{id}", new {controller = "Blog", action = "Post"}, new {year = @"\d{4,4}", month = @"\d{1,2}", day = @"\d{1,2}", id = @"(\w+-?)*"});
routes.MapRoute("Posts on Day", "Post/{year}/{month}/{day}", new {controller = "Blog", action = "PostsOnDay"}, new {year = @"\d{4,4}", month = …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc iroutehandler asp.net-mvc-routing xml-rpc.net
c# ×3
.net ×1
asp.net ×1
asp.net-mvc ×1
async-await ×1
bluetooth ×1
bluez ×1
iis ×1
javascript ×1
linux ×1
raspberry-pi ×1
redis ×1
ssh ×1
ssh-tunnel ×1
typescript ×1
xml-rpc.net ×1