我正在尝试将MVC用于一个新项目之后,我已经使用了所有的示例和教程等.但是,我很难弄清楚某些事情应该发生在哪里.
例如,我有一个名为Profile的实体.此实体包含常规配置文件类型的东西以及DateTime类型的DateOfBirth属性.在HTML表单上,出生日期字段分为3个字段.现在,我知道我可以使用自定义模型绑定器来处理这个问题,但如果输入的日期不是有效日期怎么办?我应该在模型装订器中检查它吗?我的所有验证都应该放在模型装订器中吗?是否可以在模型绑定器中仅验证一些内容并在控制器或模型本身中验证其余内容?
这是我现在的代码,但它看起来不对我.看起来很脏或很臭.
namespace WebSite.Models
{
public class ProfileModelBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
DateTime birthDate;
var form = controllerContext.HttpContext.Request.Form;
var state = controllerContext.Controller.ViewData.ModelState;
var profile = new Profile();
profile.FirstName = form["FirstName"];
profile.LastName = form["LastName"];
profile.Address = form["Address"];
profile.Address2 = form["Address2"];
profile.City = form["City"];
profile.State = form["State"];
profile.Zip = form["Zip"];
profile.Phone = form["Phone"];
profile.Email = form["Email"];
profile.Created = DateTime.UtcNow;
profile.IpAddress = controllerContext.HttpContext.Request.UserHostAddress;
var dateTemp = string.Format("{0}/{1}/{2}",
form["BirthMonth"], form["BirthDay"], form["BirthYear"]);
if (string.IsNullOrEmpty(dateTemp))
state.AddModelError("BirthDate", "Required");
else if …Run Code Online (Sandbox Code Playgroud) 我尝试了很多开源软件,我注意到开源世界中有相当数量的服务器类型应用程序使用libevent来促进基于事件的处理,而不是产生多个线程来处理请求.
我也做了很多.NET编程(这是我的核心工作函数),我有兴趣了解libevent与.NET事件模型的关系..NET中的事件是否相当于C程序的libevent?我是否应该尝试学习libevent并尝试在自定义.NET服务器应用程序中使用它,或者使用标准的.NET事件模型基本相同?
是否有任何库(付费或免费,但免费显然更好)为.NET应用程序提供前向纠错?我已经尝试查看一些开源C/C++库的源代码,但坦率地说,数学是令人困惑的,我无法以任何合理的清晰度读取其他人的C代码是一个主要的障碍.
我正在寻找一种方法让命令行程序能够将其log4net输出通过电子邮件发送给一组用户.现在,我正在读取日志文件,但我必须调用log4net.LogManager.Shutdown()来释放文件,以便我可以读取它,我必须硬编码日志文件名或解析log4net配置.我希望能够配置一个额外的appender,它会记录到我可以读取的内存位置.
我不介意为这个功能创建一个新的appender,但我不确定最好的选择是什么.我当然不想依赖另一个文件,数据库或外部数据源来获取我的日志输出.
当我使用Windows Azure配置设置时,每次我向云服务发布更新时,都会使用我的项目中的默认设置覆盖这些设置.这对我来说似乎毫无意义,因为如果我想覆盖云中的默认设置,即使在发布应用程序代码的更新时,我也希望保留这些覆盖.从Visual Studio发布时有没有办法保留设置?
我准备放弃Azure SQL以解决可靠性问题,但我想我先在这里查看.我在SQL Azure上遇到了几个零星的超时错误.这不是连接字符串问题 - 我们谈论的是几个已经运行了很长时间但没有问题的应用程序.确切的错误是:
System.ComponentModel.Win32Exception: The wait operation timed out
Run Code Online (Sandbox Code Playgroud)
目前,我正在考虑过去30分钟左右的其中300个.我运行了http://blog.sqlauthority.com/2010/05/14/sql-server-find-most-expensive-queries-using-dmv中提到的DMV查询,以了解发生了什么,并发现:

根据文档,602,382是微秒,或大约602毫秒,所以显然我的数据库使用要求非常低.我有一种感觉,这纯粹是Azure SQL的过度租赁问题.还有其他可能的解释吗?任何潜在的解决方案都不能让Azure SQL成为更环保的牧场(例如专用的SQL VM)?
我最近一直在研究.NET可用的nosql选项,MongoDB在可用性和支持方面正在成为明显的赢家,所以今晚我决定试一试.我从mongodb站点下载了1.2.4版(Windows x64二进制文件)并使用以下选项运行它:
C:\mongodb\bin>mkdir data
C:\mongodb\bin>mongod -dbpath ./data --cpu --quiet
Run Code Online (Sandbox Code Playgroud)
然后我从http://github.com/samus/mongodb-csharp加载了最新的mongodb-csharp驱动程序,并立即运行基准程序.听说过MongoDB的"速度惊人",我对糟糕的基准性能感到震惊.
Starting Tests
encode (small).........................................320000 00:00:00.0156250
encode (medium)........................................80000 00:00:00.0625000
encode (large).........................................1818 00:00:02.7500000
decode (small).........................................320000 00:00:00.0156250
decode (medium)........................................160000 00:00:00.0312500
decode (large).........................................2370 00:00:02.1093750
insert (small, no index)...............................2176 00:00:02.2968750
insert (medium, no index)..............................2269 00:00:02.2031250
insert (large, no index)...............................778 00:00:06.4218750
insert (small, indexed)................................2051 00:00:02.4375000
insert (medium, indexed)...............................2133 00:00:02.3437500
insert (large, indexed)................................835 00:00:05.9843750
batch insert (small, no index).........................53333 00:00:00.0937500
batch insert (medium, no index)........................26666 00:00:00.1875000
batch insert (large, no index).........................1114 00:00:04.4843750
find_one (small, no …Run Code Online (Sandbox Code Playgroud) 假设我有以下重叠矩形("a"和"b"):
aaaaaaaa
aaaaccccbbbbb
aaaaccccbbbbb
aaaaccccbbbbb
bbbbbbbbb
bbbbbbbbb
Run Code Online (Sandbox Code Playgroud)
我已经看到了很多关于如何计算内部矩形区域("c")的想法,但是我将如何获得实际的顶部/左/底/右坐标呢?
我正在测试C#的metaphone实现,并将其结果与PHP内置的metaphone()函数进行比较.但是,我遇到了一个错误(以前在PHP的问题跟踪器中记录并在邮件列表中讨论过),但我正在尝试根据自己的个人兴趣了解其bug背后的C代码.
基本上,根据metaphone算法,-gh-的大多数实例应该是静默的.在"wright"的具体测试用例中,我期望(并使用我自己的算法生成)一个"RT"的metaphone密钥
"wr" => R
"i" => ignored
"gh" => ignored
"t" => T
Result: RT
Run Code Online (Sandbox Code Playgroud)
但是,PHP的metaphone功能会返回RFT.很明显,它正在将-gh-转换为F,好像它在一个单词的末尾(例如"粗略"),但在"wright"这个词的情况下,这是不正确的,因为-gh-不是在这个词的最后.查看PHP源代码发行版中的metaphone.c文件,我看到了一些关键的东西:
/* These prevent GH from becoming F */
#define NOGHTOF(c) (ENCODE(c) & 16) /* BDH */
...
/* Go N letters back. */
#define Look_Back_Letter(n) (w_idx >= n ? toupper(word[w_idx-n]) : '\0')
Run Code Online (Sandbox Code Playgroud)
然后在342行:
case 'G':
if (Next_Letter == 'H') {
if (!(NOGHTOF(Look_Back_Letter(3)) || Look_Back_Letter(4) == 'H')) {
Phonize('F');
skip_letter++;
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我理解NOGHTOF函数到底是做什么的,以及为什么这段代码错误地为"wright"中的-gh-呈现F?我不是一个真正的C家伙,所以代码对我来说根本不清楚.
我有一个家庭成长的nuget包,目标netstandard1.6发布到私人饲料.当我尝试将其安装到面向.NET Framework 4.6.2的包中时,nuget告诉我:
您正在尝试将此软件包安装到以".NETFramework,Version = v4.6.2"为目标的项目中,但该软件包不包含任何与该框架兼容的程序集引用或内容文件.有关更多信息,请与软件包作者联系.
包的依赖关系列表如下所示:
我正在使用2017年3月28日发布的Visual Studio 2017.
我认为这是.NET标准库的重点?我错过了什么?