小编Rya*_*anW的帖子

ASP.NET MVC中条件输出的最佳实践?

我正在加速ASP.NET MVC,看看我如何在视图中输出消息.做这样的事情最好的方法是什么?助手?控制?或者就是这样?

<% if (ViewData.ContainsKey("message") && !string.IsNullOrEmpty(ViewData["message"].ToString())) { %>
    <div class="notice">
        <%= ViewData["message"] %>
    </div>
<% } %>
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc

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

Sinatra路线的必需和可选参数

使用Sinatra路由,如何在路径的同一部分中同时存在所需的命名参数和可选的命名参数.

可选路由参数在这里工作正常

get '/widgets.?:format?'
Run Code Online (Sandbox Code Playgroud)

但是,尝试组合一个必需的命名参数,事情就会破裂.

get '/widgets/:id.?:format?'
Run Code Online (Sandbox Code Playgroud)

对/widgets/abc.json的请求将整个abc.json作为id参数传递.

Sinatra编译的正则表达式是:

/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
Run Code Online (Sandbox Code Playgroud)

ruby regex routing routes sinatra

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

绘制 Graphite 指标中节点随时间变化的唯一计数

给定 StatsD/Graphite 数据点如下所示

stats.counters.post.topic_1.user_1.count
stats.counters.post.topic_1.user_2.count
stats.counters.post.topic_2.user_3.count
stats.counters.post.topic_2.user_4.count
Run Code Online (Sandbox Code Playgroud)

我正在尝试绘制 3 件不同的事情

  • 帖子数量
  • 主题数量
  • 发帖用户数

到目前为止,我已经收到了一些帖子

alias(summarize(sumSeries(stats.counters.post.*.*.count),"1hour"),"Total Posts")
Run Code Online (Sandbox Code Playgroud)

对于主题和用户,我有点卡住了。

我可以通过以下方式获得每个主题的系列/行:

aliasByNode(summarize(groupByNode(stats.counters.post.*.*.count, 3, "sumSeries"), "1hour"), 0)
Run Code Online (Sandbox Code Playgroud)

但是,这给出了每个主题的帖子数,而不是主题数。

我如何获得一段时间内的主题数量?由此,我确信我可以为用户应用同样的方法。

metrics graphite statsd

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

是否有等效于 Python 的 unhexlify 的 C#?

可能的重复:
如何将十六进制转换为字节数组?

我正在 C# 中寻找一种与 python 兼容的方法来将十六进制转换为二进制。我通过这样做在 Python 中反转了一个哈希:

import sha
import base64
import binascii

hexvalue = "5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8"
binaryval = binascii.unhexlify(hexvalue)
print base64.standard_b64encode(binaryval)
>> W6ph5Mm5Pz8GgiULbPgzG37mj9g=
Run Code Online (Sandbox Code Playgroud)

到目前为止,我发现的所有各种 Hex2Binary C# 方法最终都会抛出 OverflowExceptions:

static string Hex2Binary(string hexvalue)
{
    string binaryval = "";
    long b = Convert.ToInt64(hexvalue, 16);
    binaryval = Convert.ToString(b);
    byte[] bytes = Encoding.UTF8.GetBytes(binaryval);
    return Convert.ToBase64String(bytes);
}
Run Code Online (Sandbox Code Playgroud)

有人知道如何生成 C# 方法来匹配 python 输出的提示吗?

c# python binary hex

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

在多个存储库中使用相同的 DbContext 是否明智?

更深入地了解实体框架和存储库,以便更好地进行测试。想知道这是否明智?

public interface IRepository
{
    int SaveChanges();

    void Dispose();
}

using (MyContext context = new MyContext())
{
    TransactionRepository txns = new TransactionRepository(context); // TransactionRepository implement IRepository
    MappingRepository maps = new MappingRepository(context); // MappingRepositoryimplement IRepository

    SomeCommand command = new SomeCommand(txns, maps);
    command.Execute();
}
Run Code Online (Sandbox Code Playgroud)

每个存储库在逻辑上都是不同的,因此理论上可能位于不同的数据源中。目前,他们使用相同的数据库。每个存储库类都实现 IRepository,特别是 SaveChanges() 以及一些查询方法,为了简洁起见,我没有展示这些方法。

使用多个存储库的良好做法是什么?

.net c# entity-framework repository-pattern

3
推荐指数
1
解决办法
3639
查看次数

如何使用Autofac连接ASP.NET MVC 5 UserManager实例?

随着MVC 5的发布,Asp.Net.Identity位包括UserManager.实例化可能会变得混乱,我正在尝试添加Autofac控制器设置.

控制器的构造函数

public LoginController(UserManager<ApplicationUser> userManager)
{
    UserManager = userManager;
}
Run Code Online (Sandbox Code Playgroud)

手动创建新实例:

var controller = new LoginController(UserManager<ApplicationUser>(new ApplicationUserStore<ApplicationUser>(new MyDbContext())));
Run Code Online (Sandbox Code Playgroud)

ApplicationUserStore类/构造函数:

public class ApplicationUserStore<TUser> : IUserLoginStore<TUser>, IUserStore<TUser>, IDisposable where TUser : ApplicationUser

public ApplicationUserStore(IMyDbContext context)
{
    Context = context;
}
Run Code Online (Sandbox Code Playgroud)

我有新的db上下文正常工作:

builder.RegisterType<MyDbContext>().As<IMyDbContext>();
Run Code Online (Sandbox Code Playgroud)

LoginController的注册签名是什么?

asp.net-mvc dependency-injection autofac asp.net-mvc-5

3
推荐指数
1
解决办法
3612
查看次数

如何让MVC-mini-profiler在EF 4.1 Database First上运行

为此,花费更多的时间来梳理SO.这是设置

  • MVC 3 App使用Repository模式,在2个数据库中有3个存储库.
  • EF 4.1数据库首先使用DBContext API进行数据库连接.
  • 安装来自nuget的mvc-mini-profiler

这就是我在存储库中创建Db Context的方式

public class TransactionRepository : BaseRepository, ITransactionRepository
{
    AccountingEntities _db = new AccountingEntities();

    // repository methods
}
Run Code Online (Sandbox Code Playgroud)

然后在控制器中

public class InvoiceController : BaseController
{
    private ITransactionRepository _txnRepository;

    public InvoiceController()
    {
        _txnRepository = new TransactionRepository();
    }

    public InvoiceController(ITransactionRepository t)
    {
        _txnRepository = t;
    }
}
Run Code Online (Sandbox Code Playgroud)

最后,我已添加到web.config

  <system.data>
    <DbProviderFactories>
      <remove invariant="MvcMiniProfiler.Data.ProfiledDbProvider" />
      <add name="MvcMiniProfiler.Data.ProfiledDbProvider" invariant="MvcMiniProfiler.Data.ProfiledDbProvider" description="MvcMiniProfiler.Data.ProfiledDbProvider" type="MvcMiniProfiler.Data.ProfiledDbProviderFactory, MvcMiniProfiler, Version=1.8.0.0, Culture=neutral, PublicKeyToken=b44f9351044011a3" />
    </DbProviderFactories>
  </system.data>
Run Code Online (Sandbox Code Playgroud)

分析这些连接的后续步骤是什么?慢慢来,因为这是我第一次接触实体框架,所以假设EF连接/上下文细节很少.

entity-framework-4.1 database-first ef-database-first mvc-mini-profiler

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

Python可以编码一个字符串来匹配ASP.NET成员资格提供程序的EncodePassword

我正在研究一个Python脚本来从类似于ASP.NET的MembershipProvider的现有系统创建散列字符串.使用Python,有没有办法获取十六进制字符串并将其转换回二进制文件然后执行base64编码,以某种方式将原始字符串视为Unicode.我们来试试吧.我想重新编码一个哈希密码,以便在Python和ASP.NET/C#中哈希值相等:

import base64
import sha
import binascii

def EncodePassword(password):
    # strings are currently stored as hex
    hex_hashed_password = sha.sha(password).hexdigest()

    # attempt to convert hex to base64
    bin_hashed_password = binascii.unhexlify(hex_hashed_password)
    return base64.standard_b64encode(bin_hashed_password)

print EncodePassword("password")
# W6ph5Mm5Pz8GgiULbPgzG37mj9g=
Run Code Online (Sandbox Code Playgroud)

ASP.NET MembershipProvider使用此方法进行编码:

static string EncodePassword(string pass)
{
    byte[] bytes = Encoding.Unicode.GetBytes(pass);
    //bytes = Encoding.ASCII.GetBytes(pass);

    byte[] inArray = null;
    HashAlgorithm algorithm = HashAlgorithm.Create("SHA1");
    inArray = algorithm.ComputeHash(bytes);
    return Convert.ToBase64String(inArray);
}

string s = EncodePassword("password");
// 6Pl/upEE0epQR5SObftn+s2fW3M=
Run Code Online (Sandbox Code Playgroud)

那不匹配.但是,当我使用ASCII编码编码的密码运行它时,它匹配,所以.NET方法的Unicode部分是有区别的.

W6ph5Mm5Pz8GgiULbPgzG37mj9g =

在python脚本中是否有一种方法可以获得与默认.NET版本匹配的输出?

.net c# python asp.net unicode

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