我正在产生外部控制台应用程序并使用异步输出重定向.
如此SO帖子所示
我的问题是,在得到OutputDataReceived事件通知之前,生成的进程似乎需要产生一定量的输出.
我想尽快收到OutputDataReceived事件.
我有一个简单的重定向应用程序,这里有一些观察:
1.当我调用一个简单的'while(true)print("X");' 控制台应用程序(C#)我立即收到输出事件.2.当我调用3d派对应用程序时,我试图从命令行换行,我看到逐行输出.
3.当我从裸骨包装器中调用该3d派对应用程序时(参见1) - 输出以块(约一页大小)的形式出现.
该应用内部会发生什么?
仅供参考:有问题的应用程序是"USBee DX数据Exctarctor(异步总线)v1.0".
ASP.NET MVC 2 应用程序
我的控制器上有两个动作(Toons):
应用程序正在IIS7集成模式下运行,因此/ Toons/List工作正常.但是当我执行POST(内部重定向到/ Toons/List)时,它会重定向(使用302 Object Moved)返回/ Toons/Add.
如果我使用.aspx hack(在IIS6/IIS7经典模式下工作),问题就会消失.
但是如果没有.aspx - GET工作正常,但POST会将我重定向到自己,但使用GET.
我错过了什么?
我正在使用webhost4life.com托管,他们确实已经将IIS7更改为集成模式.
编辑:代码使用UltiDev Cassini服务器按预期工作.
编辑:事实证明,这是一个trash-in-URL问题.如果最后没有斜杠,IIS7会以某种方式正确路由请求.
EDET:行为的说明
当我请求(POST)/Toons/List(没有斜杠)时,IIS没有找到处理程序(我不知道IIS究竟是如何处理URL到处理程序的映射)并重定向请求(使用302代码)/Toons/List/(注意尾随斜杠).
根据HTTP规范,浏览器必须使用相同的方法(在这种情况下为POST)重定向请求,而是处理302,就好像它是303并发出对新URL的GET请求.
这是不正确的,但大多数浏览器的已知行为.
解决方案是使用.aspx-hack使IIS明确地将请求映射到ASP.NET处理程序,或者使用ASP.NET处理程序将IIS配置为处理虚拟目录中的所有内容.
问:有什么更好的方法来处理这个问题?
有人问过类似的问题,但由于它总是取决于我,所以我要分别询问我的具体情况.
我有一个网站页面,显示来自数据库的一些数据,并从该数据库生成数据,我必须做一些相当复杂的多连接查询.
数据每天更新一次(每晚).
我想预先生成所述视图的数据,以加快页面访问速度.
为此,我正在创建一个包含我需要的确切数据的表.
问题:对于我的情况,完成表格擦除然后插入是否合理?或者我应该更新,插入?
SQL明智的看起来像DELETE + INSERT会更容易(INSERT部分是单个SQL表达式).
编辑: RDBMS:MS SQL Server 2008 Ent
当用户在我的网站上输入电子邮件时,我会发送包含链接的电子邮件验证电子邮件.链接看起来像:
http://mysite.com/VerifyEmail?email=name@domain.com&token=12341234
此特定用户的电子邮件包含"+"(加号),因此链接如下所示:
http://mysite.com/VerifyEmail?email=foo+bar@domain.com&token=12341234
单击链接时(至少在Firefox中)加上替换为空格.
问题:我在.net中使用什么URL编码功能来逃避加号.
注意:Uri.EscapeUriString(email)叶子加完整.
我即时创建HTML代码段:
$('<span/>').addClass(spanClass)
Run Code Online (Sandbox Code Playgroud)
是否有一种jQuery方法将此代码包装进去<div>?
在语义上我想做:
$('<span/>').addClass(spanClass).wrap($('<div/>').addClass(divClass))
Run Code Online (Sandbox Code Playgroud)
这不起作用.所以我只想要遵循jQuery-idiomatic版本:
function wrap(what, with) { return $(with).append(what); }
Run Code Online (Sandbox Code Playgroud) 在GET请求我运行(类似):
public ActionResult Index(void) {
webClient.DownloadStringComplete += onComplete;
webClient.DownloadStringAsync(...);
return null;
}
Run Code Online (Sandbox Code Playgroud)
我发现onComplete在Index()完成执行之后才会调用它.我可以看到,onComplete在与Index执行的线程不同的线程上调用它.
问题:为什么会发生这种情况?为什么webClient的异步线程显然被阻塞,直到请求处理线程完成?
有没有办法解决这个问题,而无需启动新线程ThreadPool(我试过这个,并且使用线程池确实按预期工作.如果从ThreadPool的线程调用DownloadStringAsync,webClient的回调也会按预期发生).
ASP.NET MVC 3.0,.NET 4.0,MS Cassini开发Web服务器(VS 2010)
编辑:这是一个完整的代码:
public class HomeController : Controller {
private static ManualResetEvent done;
public ActionResult Index() {
return Content(DownloadString() ? "success" : "failure");
}
private static bool DownloadString() {
try {
done = new ManualResetEvent(false);
var wc = new WebClient();
wc.DownloadStringCompleted += (sender, args) => {
// this breakpoint …Run Code Online (Sandbox Code Playgroud) 我需要加载 18h 并将其输出到端口 60h,以下工作(在 asm("") 内)。
ldi r1, 0x18 ; 0x18 -> r1
sts 0x60, r1 ; output r1 -> 0x60
Run Code Online (Sandbox Code Playgroud)
我不在乎寄存器 r1 或其他任何用于此目的。有没有一种简单的方法让编译器决定使用哪个寄存器?
我可以使用外部 r/w 变量,但它会产生一些不必要的开销:
register uint8_t tmp;
asm volatile (
"ldi %[tmp], 0x18 \n\t"
"sts 0x60, %[tmp]"
: [tmp] "=r"(tmp) :);
Run Code Online (Sandbox Code Playgroud)
这是用于 AVR atmega(8 位)处理器。使用 GCC 4.3.2
我有一个显示人员列表的视图.对于所述视图,我创建了一个PersonListViewModel
class PersonListViewModel {
public IEnumerable<Person> People {get;set;}
public int TotalPersonCount {get;set;}
public int PeoplePerPage {get;set;}
public string OrganizationName {get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是关于Person上课.应该在哪里Person定义类?我应该怎么称呼它?
此问题是在有界上下文或层之间映射类型的更一般问题的实例.我知道我可以使用AutoMapper等来完成这项工作,但AutoMapper只能解决问题但却无法解决问题.
这里有一些我考虑过的优点和缺点:
将两个PersonListViewModel和Person类放在同一名称空间中,例如Whatever.Organization.ViewModels.
Pro:Person类名显示它是什么 - 一个人,以及该类绑定由namespace命名的上下文.Con:在我构建此Person实例的演示者中(很可能)会与Person业务域空间中的类发生冲突,因此我必须为其中一个实例添加前缀.Con:必须添加一个名称空间来包含视图模型(不一定是个问题,因为您可能已经拥有了视图模型的命名空间).
Person在PersonListViewModel课堂上筑巢.
Pro:可以Person为不同的视图模型提供多个类.Pro:Person自然是作为它所属的视图模型的范围.Con:无法Person在视图和视图模型之间重用.Inb4:我确实认为ViewModels不会被重用,我相信它会在适当的时候在表示层中重用非viewmodel对象定义.这种方法不允许这样的重用,并且在有必要的情况下有5% - 我不想创建不同的模式.
使用*ViewModel
Pro对每个表示层对象进行后缀:解决了重用和名称冲突的问题.Con:没有意义,因为Person它只是一个视图模型,当它包含一个视图的数据时,可能会或可能不是这种情况 - 例如,如果将person实例赋予[sub]视图 - 那么,从技术上讲,它将是视图模型,但如果它被用作属性上PersonListViewModel然后Person是不是一个视图模型(不超过int的TotalPersonCount是一个视图模型,这是不).
到目前为止,我没有一个让我开心的解决方案.但解决方案#1似乎是最正确的(从理论上讲),我仍然希望建议一个更好的解决方案.
我有一个文本框.如果在文本框中输入无效值后单击提交按钮,我不希望验证模糊.
如果我模糊到任何其他控件 - 那么我确实希望验证发生.
Windows [桌面]表单允许将控件指定为" no-causing-validation"以用于此精确情况.
是否可以no-cause-validation在jquery验证中将控件指定为" "?