我正在使用带有.Net 4.5和ASP MVC 4 RC的Visual Studio 2012 RC.每当我使用异步时它就会挂起.控制器操作方法使用异步,但本身不是异步控制器方法.
没有记录错误或抛出异常,但浏览器永远显示"正在等待www.myweb.local ".
// Simplest possible async
public class Waiter
{
public async Task<int> GetValue()
{
await Task.Yield();
return await Task.Factory.StartNew(() => 42);
}
}
// simplest possible controller that uses the async
public class HomeController : Controller
public ActionResult Index()
{
var waiter = new Waiter();
var resultTask = waiter.GetValue();
int result = resultTask.Result;
// it never gets here
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我已经完成了这个答案中提到的事情,但它仍然不起作用.即.web.config包含
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/>
Run Code Online (Sandbox Code Playgroud)
魔术词await …
下面的简单演示捕获了我想要做的事情.在真正的程序中,我必须使用对象初始化块,因为它正在读取LINQ to SQL选择表达式中的列表,并且有一个值我要读取数据库并存储在对象上,但是对象没有我可以为该值设置的简单属性.相反,它有一个XML数据存储.
看起来我无法在对象初始化块中调用扩展方法,并且我无法使用扩展方法附加属性.
我对这种方法运气不好吗?唯一的替代方案似乎是说服基类的所有者为这种情况修改它.
我有一个现有的解决方案,我将BaseDataObject子类化,但是这个问题也没有出现在这个简单的例子中.对象将作为BaseDataObject进行持久化和恢复 - 转换和测试将变得复杂.
public class BaseDataObject
{
// internal data store
private Dictionary<string, object> attachedData = new Dictionary<string, object>();
public void SetData(string key, object value)
{
attachedData[key] = value;
}
public object GetData(string key)
{
return attachedData[key];
}
public int SomeValue { get; set; }
public int SomeOtherValue { get; set; }
}
public static class Extensions
{
public static void SetBarValue(this BaseDataObject dataObject,
int barValue)
{
/// Cannot attach a property to BaseDataObject?
dataObject.SetData("bar", …Run Code Online (Sandbox Code Playgroud) 有没有人用过WiX为ASP.Net MVC网站生成安装程序?您是从Web项目中收集文件的吗?我找不到任何好的例子.似乎没有记录的方法来包含所有正确的文件,只包含正确的文件并将它们放在正确的位置.
如果您在安装程序项目中添加网站项目作为参考,并harvest=True在属性中设置,则会捕获所有网站文件,但是存在以下问题:
packages.config,Web.Debug.config似乎没有任何明确或简单的方法来排除它们(根据本讨论).但是,如果你不使用收获,你手动引用很多文件(例如,\Content\单独我在5个文件夹中有58个文件.大多数是jQuery UI),它们会不时变化,错误和遗漏很容易从WiX文件列表中错过.所以它确实应该自动保持同步.
我不同意这样的想法,即文件列表应该在WiX中明确指定而不是动态生成(这似乎是在第一个链接上建议的,措辞不是很清楚).如果我需要删除一个文件,我将从源控制系统中删除,不需要做额外的工作来维护两个并行但不同的目录 - 源代码管理中的一组文件,以及WiX中列出的相同文件.应该有一个版本的事实.网站源代码树中的所有文件(具有某些已知的异常,例如在运行时未使用packages.config)应包含在部署中.
出于公司原因,我没有太多选择在这个项目中使用WiX
如何通过API和.Net SDK以编程方式列出AWS账户中的所有SQS队列?
我已经在使用DynamoDb表做了类似的事情,这非常简单 - 你可以在循环中使用ListTables翻译结果,直到你拥有它们.
但是,等效的SQS Api端点,ListQueues是不同的,并没有那么有用.它最多返回1000个队列,没有分页选项.
是的,在我的案例中可以有超过1000个队列.我有一个查询返回1000个结果.它全部在1个区域,所以它与这个问题不一样.
我把这个问题表述如下:
EventBridge 事件是否中继到 ECS 任务?(如果不转发事件,我看不出它有多大用处)。
如果事件被中继,那么如何能够从作为任务运行的 Node 应用程序中提取它。
某些上下文到期:可以设置 EventBridge 规则来触发 ECS Fargate 任务,作为源自 CodeCommit 的事件的结果。请注意,这里的问题是接收器/目标,而不是源。当我更新我的存储库时,我能够触发 Fargate 任务。我可以使用其他事件。我的挑战在于提取转发的事件(在这种情况下,是来自 Fargate 的存储库名称、commitId 等。)
EventBridge 文档清楚地说明了如何设置触发事件的规则,但对如何提取事件却一无所知——这是有道理的,因为接收器/目标文档将有必要的参考。但是 ECS 文档并不清楚如何提取中继事件。
我能够检查元数据和 process.env。我在任何一家商店都找不到该活动。
我添加了一个 CloudWatch 日志组作为同一规则的目标,并且能够提取事件。所以它肯定会中继到一些目标,但不确定事件是否会中继到 ECS 任务。
因此,问题出现了:事件是否中继到 ECS 任务?如果是这样,您将如何访问它?
我无法让Silverlight 2.0按照我想要的方式布置文本.我希望带有换行符和嵌入式链接的文本,包装,就像网页中的HTML文本一样.
这是我最接近的:
<UserControl x:Class="FlowPanelTest.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
Width="250" Height="300">
<Border BorderBrush="Black" BorderThickness="2" >
<Controls:WrapPanel>
<TextBlock x:Name="tb1" TextWrapping="Wrap">Short text. </TextBlock>
<TextBlock x:Name="tb2" TextWrapping="Wrap">A bit of text. </TextBlock>
<TextBlock x:Name="tb3" TextWrapping="Wrap">About half of a line of text.</TextBlock>
<TextBlock x:Name="tb4" TextWrapping="Wrap">More than half a line of longer text.</TextBlock>
<TextBlock x:Name="tb5" TextWrapping="Wrap">More than one line of text, so it will wrap onto the following line.</TextBlock>
</Controls:WrapPanel>
</Border>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
但问题在于虽然文本块tb1和tb2将会进入同一行,因为它们有足够的空间完全存在,但是tb3以后不会在前一个块的同一行开始,即使它将包裹到下一行.
我希望每个文本块在同一行上从前一个文本块结束.我想在某些文本上放置click事件处理程序.我还想要段落休息.基本上我正在努力解决Silverlight 2.0的XAML子集中缺少FlowDocument和Hyperlink控件的问题.
回答答案中提出的问题:
为什么不使用不可点击文本的运行?如果我只在可点击的文本上使用单独的TextBlocks,那么这些文本仍然会受到上面说明的包装问题的影响.而TextBlock就在链接之前,而TextBlock就在之后.基本上所有这一切.看起来我没有很多机会在同一个TextBlock中放置多个运行.
使用RegExs和循环将链接与其他文本分开根本不是问题,问题是显示布局.
为什么不将每个单词放在WrapPanel中的单个TextBlock中除了是一个丑陋的黑客之外,这对于换行没有好处 - 布局不正确.
它还会使链接文本的下划线样式变成虚线.
这是一个示例,其中每个单词都在自己的TextBlock中.尝试运行它,请注意,换行符根本没有显示在正确的位置.
<UserControl x:Class="SilverlightApplication2.Page" …Run Code Online (Sandbox Code Playgroud) 所有这些文本看起来都一样,但我试图让它们看起来不同.我想要小帽子文字.我在这里错过了什么让小帽子排版效果起作用?
要重现这一点,请打开Visual Studio 2008,Do File | New Project,创建一个新的Windows | WPF应用程序,将下面的标记粘贴到Window1.xaml中,然后运行它.
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<FlowDocumentReader>
<FlowDocument>
<Paragraph>
<Run>Some text</Run> <LineBreak />
<Run Typography.Capitals="SmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllSmallCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="PetiteCaps">Some text</Run> <LineBreak />
<Run Typography.Capitals="AllPetiteCaps">Some text</Run> <LineBreak />
</Paragraph>
</FlowDocument>
</FlowDocumentReader>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
根据第一个答案,似乎如果你指定一个特定的字体,你可以到达某个地方.将FlowDocument开始标记更改为:
<FlowDocument FontFamily="Palatino Linotype">
Run Code Online (Sandbox Code Playgroud)
..你得到SmallCaps和AllSmallCaps,但不是PetiteCaps或AllPetiteCaps.所以它取决于字体.但这引起了其他问题:
我们正在为C#项目评估IoC容器,Unity和Castle.Windsor都很突出.我喜欢Unity的一件事(NInject和StructureMap也这样做)是明显如何构造它们的类型不必在IoC容器中注册.
有没有办法在Castle.Windsor做到这一点?我对Castle很公平.温莎要说它不这样做吗?有没有设计理由故意不这样做,或者是疏忽,还是只是没有被视为重要或有用?
我知道container.Register(AllTypes...在温莎,但这不是一回事.它不是完全自动化的,而且非常广泛.
为了说明这一点,这里有两个NUnit测试通过Unity和Castle.Windsor做同样的事情.Castle.Windsor失败了.:
namespace SimpleIocDemo
{
using NUnit.Framework;
using Castle.Windsor;
using Microsoft.Practices.Unity;
public interface ISomeService
{
string DoSomething();
}
public class ServiceImplementation : ISomeService
{
public string DoSomething()
{
return "Hello";
}
}
public class RootObject
{
public ISomeService SomeService { get; private set; }
public RootObject(ISomeService service)
{
SomeService = service;
}
}
[TestFixture]
public class IocTests
{
[Test]
public void UnityResolveTest()
{
UnityContainer container = new UnityContainer();
container.RegisterType<ISomeService, ServiceImplementation>();
// Root object needs no registration …Run Code Online (Sandbox Code Playgroud) .net castle-windsor ioc-container inversion-of-control unity-container
这是一个powershell脚本:
function PickANumber()
{
12
}
function GetTheAnswer()
{
PickANumber + 30
}
$answer = GetTheAnswer
write-output "The answer is $answer"
Run Code Online (Sandbox Code Playgroud)
该脚本的输出是:
The answer is 12
Run Code Online (Sandbox Code Playgroud)
据我所知,这是因为powershell函数调用在它们之间的参数或逗号周围没有括号,因此PickANumber + 30被解析为类似的东西PickANumber('+', 1)而不是PickANumber() + 1.这不是一个错误,未使用的args被简单地忽略(就像使用JavaScript一样).
如果你稍微改一下,那么答案是42:
function GetTheAnswer()
{
$a = PickANumber
$a + 30
}
Run Code Online (Sandbox Code Playgroud)
但肯定有一种方法可以在一条线上做到这一点吗?
我在这里张贴是因为这也会咬别人.
微软的单元测试框架突然罢工.
当我尝试在VS2008中运行测试时,我收到一条消息"VSTestHost.exe已停止工作".
我在Vista上运行Visual Studio Team System 2008(版本9.0.30729.1 SP)并应用了所有更新.
"问题报告和解决方案"表明我"升级到Visual Studio Team Edition for Software Testers的最新零售版本",这是不对的.
我试过重启.
我试过"devenv/resetuserdata"
这些没有区别.
我想根据这个废话回到MbUnit,但这不是我的选择.
对于如何解决这个问题,有任何的建议吗?
asp.net-mvc ×2
c# ×2
xaml ×2
.net ×1
amazon-sqs ×1
async-await ×1
aws-sdk ×1
expression ×1
flowdocument ×1
initializer ×1
installer ×1
linq ×1
powershell ×1
silverlight ×1
smallcaps ×1
syntax ×1
text ×1
unit-testing ×1
vstesthost ×1
wix ×1
wpf ×1