小编mar*_*rce的帖子

同一应用程序池中的网站是否共享加载的库?

我有一个带有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 - 再次,网站的速度不是关键,他们应该工作.这有什么意义吗?

asp.net iis application-pool

11
推荐指数
1
解决办法
4319
查看次数

TypeScript类函数不可用

我正在尝试调用TypeScript类的实例方法(在ASP.NET MVC项目中).但是,在运行时我会遇到异常0x800a01b6 - JavaScript runtime error: Object doesn't support property or method 'checkString'.

我在jsfiddle中复制了生成的JavaScript,其中方法似乎有效.
我不是一个真正的JavaScript人,所以非常感谢任何帮助!

到目前为止我尝试过的事情:

  1. 不同的浏览器(铬:Uncaught TypeError: undefined is not a function,FF: TypeError: this.checkString is not a function)
  2. 清除浏览器缓存
  3. 删除IIS Express的临时文件
  4. 清理和重建解决方案
  5. 不使用私有修饰符
  6. 在另一台机器上启动项目
  7. 用假人替换underscore.js调用来验证这不是问题
  8. 检查实例成员是否已正确设置

这是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)

javascript typescript

11
推荐指数
2
解决办法
2万
查看次数

在安全连接上使用Redis

我有一个运行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上的不存在的服务器,并且转发似乎不起作用.我的问题是:

  1. 是否可以将SSH.NET的SSH隧道用于RedisClient?
  2. 我只是使用SshClient错了吗?
  3. 有没有更简单的方法来完成与远程Redis服务器的加密连接?

我无法应用任何操作系统级别的调整,因此解决方案应该是纯达4.5.1的.NET.这里发布的解决方案需要一个商业图书馆,而我必须依赖免费的.

谢谢!

.net c# ssh redis ssh-tunnel

7
推荐指数
1
解决办法
1435
查看次数

如何正确编写自定义任务返回方法

为了异步运行代码(例如使用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的链接).

c# task-parallel-library async-await

5
推荐指数
1
解决办法
5452
查看次数

使用BlueZ堆栈作为外设时错误的有效负载

我试着按照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".

但是,当我尝试 …

linux bluetooth raspberry-pi bluetooth-lowenergy bluez

5
推荐指数
1
解决办法
4880
查看次数

路由映射到不同路由的参数

我正在尝试为我的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

4
推荐指数
1
解决办法
356
查看次数