小编Edm*_*g99的帖子

创建N个对象并将其添加到列表中

我有一个方法,它接受N,我想要创建的对象的数量,我需要返回N个对象的列表.

目前我可以用一个简单的循环来做到这一点:

    private static IEnumerable<MyObj> Create(int count, string foo)
    {
        var myList = new List<MyObj>();

        for (var i = 0; i < count; i++)
        {
            myList .Add(new MyObj
                {
                    bar = foo
                });
        }

        return myList;
    }
Run Code Online (Sandbox Code Playgroud)

我想知道是否有另一种方式,也许用LINQ来创建这个列表.

我试过了:

    private static IEnumerable<MyObj> CreatePaxPriceTypes(int count, string foo)
    {
        var myList = new List<MyObj>(count);

        return myList.Select(x => x = new MyObj
            {
                bar = foo
            });

    }
Run Code Online (Sandbox Code Playgroud)

但这似乎填补了我的名单.

我尝试将选择更改为foreach但是同样的交易.

我意识到列表具有计数能力,LINQ没有找到任何要迭代的元素.

        myList.ForEach(x => x = new MyObj
        {
            bar = foo …
Run Code Online (Sandbox Code Playgroud)

c# linq

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

如何找出当前安装的webdeploy/msdeploy版本?

我正在寻找类似Powershell脚本的东西来检查是否安装了msdeploy,如果是,那么是什么版本

我考虑过检查"c:\ Program Files\IIS"并检查那里的MSDeploy安装,但是这总是保证是安装位置吗?

我需要这个在任何给定的服务器机器上工作

powershell msdeploy webdeploy

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

如何使用MSDeploy配置应用程序池

我目前正在使用MSBuild通过传入参数来创建MSDeploy包:

/p:DeployOnBuild=true;DeployTarget=Package
Run Code Online (Sandbox Code Playgroud)

我正在使用一个parameters.xml文件(放在我网站的根目录下). 我发现的另一个问题是尝试设置应用程序池.

我的parameters.xml文件:

<parameters>
    <parameter name="Application Pool Name" description="Application Pool for this site" tags="" defaultValue="ASP.NET v4.0">
        <parameterEntry kind="DeploymentObjectAttribute"
                        scope="application"
                        match="/application/@applicationPool" />
    </parameter>
...
</parameters>
Run Code Online (Sandbox Code Playgroud)

但似乎msbuild生成的msdeploy包中的archive.xml文件没有带有applicationPool元素的部分

如何使用此部分生成archive.xml以便我可以设置应用程序池?

我想要设置的应用程序池已经存在,所以我不关心MSDeploy同步或在这里创建应用程序池.

编辑:我发现了这个问题如何通过VS&MSDeploy设置控制用于部署的AppPool,提示使用wpp.targets生成自定义提供程序.我正在探索如何使用此方法来修改archive.xml文件

msbuild msdeploy

6
推荐指数
1
解决办法
8484
查看次数

Wix目录如何工作?

我正在尝试构建WIX安装程序,该安装程序允许用户通过命令行参数指定安装路径。

<Property Id="IISROOTPATH">
   <RegistrySearch Id="FindInetPubFolder" Root="HKLM" Key="SOFTWARE\Microsoft\InetStp" Name="PathWWWRoot" Type="directory" />
</Property>    
...
<Directory Id="TARGETDIR" Name="SourceDir">
   <Directory Id="IISROOTPATH">
      <Directory Id="INSTALLPATH" Name="WebsiteFolder">
...
Run Code Online (Sandbox Code Playgroud)

如果用户未传递任何参数,它将在iisroot文件夹中查找注册表,并将文件安装在名为“ WebsiteFolder”的文件夹下

但是,为了使用户能够更改安装路径,他们必须通过绝对路径,例如

INSTALLPATH="C:\InetPub\wwwroot\CustomWebsiteFolder"
Run Code Online (Sandbox Code Playgroud)
  1. 这是如何运作的?然后是否忽略其他目录元素TARGETDIR和IISROOTPATH?

  2. 如何将INSTALLPATH更改为WEBSITEFOLDERNAME,以便仅要求用户输入文件夹名称,而不是绝对安装路径。从而迫使用户始终安装到inetpub中吗?

windows-installer wix wix3.5

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

如何减少Windows Azure网站上托管的Orchard CMS站点的内存消耗

我有一个目前托管在Windows Azure网站上的Orchard CMS网站.

它是一个非常标准的博客,图像通过skydrive托管和链接,因此博客本身只提供HTML.

我已将其设置为共享模式,运行1个实例.

但我一直在达到配额.看起来我的网站总是最大化内存(最大为每小时512mb),我不明白为什么?

我已经尝试增加到3个实例,但它不会增加我可以使用的最大内存.

更新:

共享模式下网站的最大使用量为:
CPU时间:每天4小时,每5分钟2.5分钟
文件系统:1024mb
内存使用量:每小时512mb
数据库:1024mb(Web实例)

UPDATE2:

我尝试在不同的区域重新创建我的网站.目前我的网站托管在美国西部,具有上述限制,但其他区域的限制略有不同,例如东亚每小时内存使用限制为1024mb!我无法挖掘任何关于此的文档,这令人费解.

UPDATE3:

在Update2中,我提到不同的区域具有不同的"每小时内存使用限制".事实并非如此.我在"Free"设置下设置了一个新网站,每小时1024mb,但当我将其切换为"Shared"时,内存使用限制降至每小时512mb.


尽管是相同的源代码,但我无法在我的任何其他网站上重现此问题,这让我相信我的特定天蓝网站设置的奇怪之处.可能与@Vinblad提到的仪表板有关.

我打算在不同的地区建立一个新的天蓝色网站,当我在它的时候,升级到Orchard 1.6

azure orchardcms azure-web-sites

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

C#内联初始化IGrouping

如果我想初始化分组列表,我可以内联吗?

更新上下文

我已经知道我无法初始化接口,但是dotnet中是否已经内置了一个实现?

我不想创建自己的实现,因为我试图将现有的私有方法重构为它自己的公共类,因此我需要传递参数进行单元测试.

void MyMethod(IList<IGrouping<int, MyObject>> objGroupings)
Run Code Online (Sandbox Code Playgroud)

目前我已经使用初始化列表,然后按键分组:

var fooList = new List<MyObject>
{
     new MyObject{ foo = 5 },
     new MyObject{ foo = 5 },
     new MyObject{ foo = 5 },
     new MyObject{ foo = 2 },
     new MyObject{ foo = 2 }
};

var fooGrouping = fooList.GroupBy(o => o.foo).ToList();
Run Code Online (Sandbox Code Playgroud)

c# linq

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

使用Autofac配置StackExchange.Redis的最佳实践是什么?

StackExchange.Redis文档中,建议仅创建一个并重用与Redis的连接。

Azure Redis最佳实践建议使用以下模式:

private static Lazy<ConnectionMultiplexer> lazyConnection = new Lazy<ConnectionMultiplexer>(() =>
{
    return ConnectionMultiplexer.Connect("cachename.redis.cache.windows.net,ssl=true,abortConnect=false,password=password");
});

public static ConnectionMultiplexer Connection
{
    get
    {
        return lazyConnection.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我应该如何在要在Web /应用程序配置文件中设置配置的Autofac上使用它呢?

我目前有一个RedisCacheProvider:

private readonly ConnectionMultiplexer _connection;

public RedisCacheProvider(string config)
{
    _connection = ConnectionMultiplexer.Connect(config);
}
Run Code Online (Sandbox Code Playgroud)

并在我的Autofac配置中:

builder.RegisterType<RedisCacheProvider>().As<ICacheProvider>().WithParameter("config", "localhost");
Run Code Online (Sandbox Code Playgroud)

我的想法是,我应该更改RedisCacheProvider使其接受通过静态变量传递的ConnectionMultiplexer吗?

更新:到目前为止,我的解决方案:

我的RedisCacheProvider(在这里注入接口可以让我在单元测试中模拟连接):

private readonly IConnectionMultiplexer _connection;

public RedisCacheProvider(IConnectionMultiplexer connection)
{
   _connection = connection;
}
Run Code Online (Sandbox Code Playgroud)

RedisConnection类保存静态属性并从配置文件读取配置:

public class RedisConnection
{
    private static readonly Lazy<ConnectionMultiplexer> LazyConnection = 
        new Lazy<ConnectionMultiplexer>(
            () => ConnectionMultiplexer.Connect(ConfigurationManager.AppSettings["RedisCache"]));

    public static …
Run Code Online (Sandbox Code Playgroud)

autofac stackexchange.redis

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

响应服务器请求时,SignalR“必须先调用启动才能发送数据”

我有一些SignalR客户端代码,在服务器发出请求后会调用服务器方法:

        var connection = new HubConnection(_hubAddress);
        var hubProxy = _hubConnection.CreateHubProxy(HubName);
        connection.Start().Wait(TimeSpan.FromMinutes(1));
  ...

        hubProxy.On("Client_Method", (string callerId, string requestIdentifier) =>
        {
           if (connection.State == ConnectionState.Connected)
           {
              // error hapening on the invoke call here, despite 
              // the connection state being connected.  
              // Do I need to call Start here?
              hubProxy.Invoke("Proxy_Method_Callback", callerId, requestIdentifier);
           }
        });
Run Code Online (Sandbox Code Playgroud)

但是它抛出一个例外:

InvalidOperationException:无法发送数据,因为连接处于断开状态。发送任何数据之前先呼叫开始。

但是,如果hubProxy已连接并打开以接收请求,为什么调用时会出错?

c# signalr

2
推荐指数
1
解决办法
9636
查看次数