我正在寻找一种在Outlook窗口中打开新邮件的方法.
我需要以编程方式填写:from,to,subject,body information,但是保持这个新的邮件窗口打开,这样用户就可以验证内容/添加内容然后像普通的Outlook邮件一样发送.
发现:
Process.Start(String.Format(
"mailto:{0}?subject={1}&cc={2}&bcc={3}&body={4}",
address, subject, cc, bcc, body))
Run Code Online (Sandbox Code Playgroud)
但是没有"发件人"选项(我的用户有多个邮箱...)
有什么建议吗?
我有一个DataTable(Ado.Net),其列为'Status'.此列包含值(在每个记录中)
[ '红', '绿', '蓝', '黄', '白', 'OtherColors']
我想选择状态值不是红色,绿色,蓝色的所有行
使用我提议的标准选择数据的过滤表达式是什么样的.所以我想要在sql查询中使用一些东西(WHERE Status NOT IN('Red','Green','Blue')
注意:这个项目运行.NET 2.0我不能使用linq
当MVC运行时ActionMethod,它将填充ModelState字典并使用a ModelBinder来构建ActionMethod参数(如果有的话).它这样做是两个GET和POST.这是有道理的.
后ActionMethod成功已经跑了,视图是使用所提供的剃刀,这在我的情况下,使用尽可能多的呈现HtmlHelper通话成为可能.到现在为止,您可能会想,"我知道MVC是如何工作的".等等,我到了那里.
当我们使用例如@Html.TextFor(m => m.Name)MVC时,使用可以在这里呈现标记的代码.
有趣的部分是在我们找到的文件的末尾:
switch (inputType)
{
case InputType.CheckBox:
// ... removed for brevity
case InputType.Radio:
// ... removed for brevity
case InputType.Password:
// ... removed for brevity
default:
string attemptedValue =
(string)htmlHelper.GetModelStateValue(fullName, typeof(string));
tagBuilder.MergeAttribute("value", attemptedValue ??
((useViewData)
? htmlHelper.EvalString(fullName, format)
: valueParameter), isExplicitValue);
break;
}
Run Code Online (Sandbox Code Playgroud)
这意味着它Modelstate用于获取提供的值Model.这对于a是有意义的,POST因为当存在验证错误时,您希望MVC使用用户已经提供的值来呈现视图.文档还说明了这种行为,StackOverflow上有几篇帖子证实了这一点.但它只是为说明POST,如能上可以看到这个线程,例如
但是,当为一个视图渲染时,也会使用此代码 …
我有一些奇怪的行为,我无法弄清楚.
我正在使用WCF服务将文件保存到某个数据库表.WCF服务有一个方法,它将JSON字符串作为参数.在这种情况下,JSON是一个序列化命令,其中包含List<FileData>其他属性.WCF服务反序列化JSON并运行CommandHandler此特定命令.
最终用户在尝试上传大小为52 MB的文件时遇到了错误.WCF服务返回404错误.
我能够在Visual Studio中重现这一点.根据这篇文章更改配置文件后,404消失了.
但是现在出现了一个新的异常:当命令成功序列化客户端,由WCF成功处理后,反序列化抛出了一个OutOfMemoryException.这是堆栈跟踪的顶部:
在Newtonsoft.Json.JsonTextReader.ReadData(布尔追加,的Int32 charsRequired)在Newtonsoft.Json.JsonTextReader.ReadData(布尔附加)在Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(CHAR引号)在Newtonsoft.Json.JsonTextReader.ParseString(CHAR报价)Newtonsoft.Json.JsonTextReader.ParseValue()at Newtonsoft.Json.JsonTextReader.ReadInternal()at Newtonsoft.Json.JsonReader.ReadAsBytesInternal()at Newtonsoft.Json.JsonTextReader.ReadAsBytes()at Newtonsoft.Json.Serialization.JsonSerializerInternalReader. ReadForType(JsonReader阅读器,JsonContract契约,布尔hasConverter)
我写了一个单元测试来证明这个bug.但是,不顾一切,这个测试通过,换句话说,没有OutOfMemoryException被抛出.
为完整性而进行的测试:
[TestMethod]
public void LoadBigFile_SerializeDeserialize_DoesntThrowOutOfMemoryException()
{
// Arrange
byte[] bytes = new byte[80000000];
Random r = new Random(23);
r.NextBytes(bytes);
var command = new SomeCommand(new List<FileData>
{
new FileData(
fileFullName: @"D:\SomePdfFile.pdf",
modifyDate: DateTime.MaxValue,
data: bytes
)
});
var data = JsonConvert.SerializeObject(command);
// Act
var deserializedCommand =
JsonConvert.DeserializeObject<SomeCommand>(data);
// Assert
Assert.AreEqual(bytes.Length, deserializedCommand.Files.First().Data.Length);
}
Run Code Online (Sandbox Code Playgroud)
所以,我抓住了机会,改变了生产中的配置文件,并尝试上传相同的文件.这才有效!!! 不OutOfMemoryException! …
根据为什么每个请求创建和处理来自Asp.Net Identity 的问题,ApplicationDbContext我做了一些研究,为什么会发生这种情况.我发现实际ApplicationDbContext创建了一次,HttpRequest但是当使用Owin管道时,Owin Middleware将在HttpRequest结束后第二次创建.
因此,ApplicationDbContext当用户点击一个链接时,确实创建了第二次,给出的印象是每次创建对象两次WebRequest.
经过大量的研究,我决定在不使用任何身份验证的情况下启动一个简单的MVC 5项目.从NuGet添加Owin中间件后,我创建了以下Owin Middleware组件.这基本上检查HttpContext字典中是否存在某些假对象,并在字典中不存在时创建一个假对象.输出将写入调试窗口以简化操作.
[assembly: OwinStartupAttribute(typeof(MvcPlain.Startup))]
namespace MvcPlain
{
public class Startup {
public static int Counter;
public static string FakeKeyName;
public void Configuration(IAppBuilder app) {
app.Use(async (context, next) =>
{
Debug.WriteLine("Owin middleware entered => begin request");
FakeKeyName = "owinKey" + Counter.ToString();
var fakeKeyPresent = HttpContext.Current.Items.Contains(FakeKeyName);
Debug.WriteLine(string.Format("{0} key present in HttpContext?: {1}",
FakeKeyName, fakeKeyPresent));
if (!HttpContext.Current.Items.Contains(FakeKeyName))
{
Counter += 1; …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×1
.net-2.0 ×1
.net-4.0 ×1
ado.net ×1
asp.net ×1
asp.net-mvc ×1
email ×1
json.net ×1
modelstate ×1
outlook-2003 ×1
owin ×1
razor ×1