小编Ric*_*Net的帖子

如何打开Outlook新邮件窗口c#

我正在寻找一种在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)

但是没有"发件人"选项(我的用户有多个邮箱...)

有什么建议吗?

c# email .net-4.0 office-interop outlook-2003

33
推荐指数
2
解决办法
7万
查看次数

如何使用Not in datatable.select

我有一个DataTable(Ado.Net),其列为'Status'.此列包含值(在每个记录中)

[ '红', '绿', '蓝', '黄', '白', 'OtherColors']

我想选择状态值不是红色,绿色,蓝色的所有行

使用我提议的标准选择数据的过滤表达式是什么样的.所以我想要在sql查询中使用一些东西(WHERE Status NOT IN('Red','Green','Blue')

注意:这个项目运行.NET 2.0我不能使用linq

.net c# asp.net ado.net .net-2.0

6
推荐指数
2
解决办法
2万
查看次数

为什么MVC在GET上使用Modelstate而非提供的Model

当MVC运行时ActionMethod,它将填充ModelState字典并使用a ModelBinder来构建ActionMethod参数(如果有的话).它这样做是两个GETPOST.这是有道理的.

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,如能上可以看到这个线程,例如

但是,当为一个视图渲染时,也会使用此代码 …

c# asp.net-mvc modelstate razor

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

Json.Net仅在Visual Studio中抛出OutOfMemoryException

我有一些奇怪的行为,我无法弄清楚.

我正在使用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! …

c# json.net deserialization visual-studio-2015

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

为什么在HttpRequest结束后第二次创建了owin中间件

根据为什么每个请求创建和处理来自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# owin asp.net-mvc-5 owin-middleware

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