小编grm*_*hel的帖子

实例验证错误:*不是*的有效值

我正在尝试反序列化一个XML字符串,其中元素的值不在我的Enum值的范围内.

Public enum MyEnum
{
    Unknown,
    Car,
    Bicycle,
    Boat
}

[SerializableAttribute()]
public class MyClass
{
    private string _id;
    private MyEnum _myEnum;

    public string ID
    {
        get { return _id; }
        set { _id = value; }
    }

    public MyEnum EnumValue
    {
        get { return _myEnum; }
        set { _myEnum = value; }
    }

    public MyClass(string id)
    {
        this._id = id;
    }

    public MyClass() : this("") { }
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试反序列化后面的字符串(注意Plane作为枚举值):

<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><MyClass><ID>1234567890123456789</ID><EnumValue>Plane</EnumValue></MyClass>
Run Code Online (Sandbox Code Playgroud)

然后我的反序列化将抛出异常,甚至在它为EnumValue命中我的公共字段之前,会出现以下异常消息:

实例验证错误:'Plane'不是EnumValue的有效值

是否可以返回EnumValue的默认值,如果我尝试在XML中解析的值不支持EnumValue?例如.对于此处提供的XML字符串,EnumValue应设置为"Unknown".

c# xml-deserialization

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

使用Mailkit丢失附件

当我使用MailKit通过IMAP协议收到来自Exchange的邮件时,它缺少附件.当我做:

string.Format("Mail has {0} attachments", mime.Attachments.Count())
Run Code Online (Sandbox Code Playgroud)

它报告"0",即使邮件本身包含附件(如果我在Outlook客户端中打开它,我会看到附件)​​,当我激活IMAP协议日志记录时,显然它包含一个附件:

S: X-MS-Has-Attach: yes
...
S: Content-Type: message/rfc822
S: Content-Disposition: attachment;
S:  creation-date="Thu, 07 Jan 2016 09:16:53 GMT";
S:  modification-date="Thu, 07 Jan 2016 09:16:53 GMT"
...
S: X-MS-Has-Attach:
...
Run Code Online (Sandbox Code Playgroud)

有趣的是附件部分中的"S:X-MS-Has-Attach:"标题,位于服务器的同一个包中.

这是一个已知的问题,我该如何修复它以便在这些情况下我不会错过附件?它似乎只发生在一些邮件上并随机发生.

使用:MailKit 1.0.14.0 MimeKit 1.0.13.0

我发现有新的更新,但如果不能解决问题,我不会真正更新.

c# mailkit mimekit

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

存储过程中具有 Null 值的位参数

我的表中有一个位值,其中包含位(0 或 1)和 NULL(默认)。

这是我的 SProc:

CREATE PROCEDURE msp_CustomerStatistics 
   @Postal_MinValue int,
   @Postal_MaxValue int,
   @SubscriberState bit,
   @CustomerType varchar(50)
BEGIN
   [...]
   WHERE Sub = @SubscriberState
   AND Postal BETWEEN @Postal_MinValue AND @Postal_MaxValue
   AND CustType = @CustomerType
END
Run Code Online (Sandbox Code Playgroud)

当我用1或0传递@SubscriberState参数时,结果是正确的。但是当我传递 null 时,结果是 0,这是不正确的。

如果我使用以下 where 子句创建 SQL 选择:

WHERE Sub IS NULL
Run Code Online (Sandbox Code Playgroud)

然后结果显示正确的计数。

知道如何让我的存储过程在 WHERE 子句中也使用 NULL 参数吗?

sql stored-procedures

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

使用Microsoft.Speech取消.Speak

我有一个使用Microsoft.Speech for TTS的应用程序.我的TTS有问题,如果流在完成之前就已经开始了.

public void SpeakTest()
{
  PromptBuilder prompt = new PromptBuilder();
  prompt.AppendText("This is a test prompt...");
  _speechSynthersizer.Speak(prompt);
  prompt.ClearContent();
}
Run Code Online (Sandbox Code Playgroud)

这个TTS对象可以在讲话结束之前处理,这导致System.IO.EndOfStreamException和System.InvalidOperationException:说话时不能改变合成器的输出.例外.

如何取消发言,所以当我的对象被处理时,它将取消说话并正确处理对象?

c# microsoft-speech-platform

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

使用 Mailkit 获取收件箱更改通知

使用 MailKit 在我的邮箱的收件箱中发生邮件或更改时,获得即时通知的最佳方式是什么?

我一直在玩以下事件: ImapClient.Inbox.CountChanged; 这在使用 Exchange 服务器时似乎效果最好,因为它们根本不会对 MessageArrived 事件做出反应。噗..

ImapClient.Inbox.MessagesArrived; 这似乎在 SquirrelMail 等开源邮件服务器上运行良好,但在 Exchange 中根本不起作用。

我想在新邮件到达邮箱时收到通知,是否有任何邮件被移动/删除,以及是否有任何邮件移动到此 imap 文件夹。当我的收件箱发生问题时,我应该采取哪种方法来尽快收到事件?我想要两全其美。

什么是 ImapClient.Inbox.Subscribe(); 用于??

c# mailkit

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

使用 MailKit 的线程安全 GetFolder

我在使用多线程使用 MailKit 的 GetFolder 函数时遇到问题。情况是他们我正在运行一个线程来移动我的电子邮件(其中一个函数确实使用 GetFolder 来查找我的源文件夹和目标文件夹以移动电子邮件),另一个线程将搜索电子邮件第一个正在运行(第二个线程也执行 GetFolder 函数)。

大多数情况下,我都会收到 InvalidOperationException 异常,告诉我“ImapClient 当前正忙于处理命令”。

我怎样才能确保这不会发生?我尝试将所有 GetFolder 和其他 MailKit 操作更改为异步,并等待任务完成,但没有任何运气或多或少同时执行此操作。

我为两个线程使用相同的 ImapClient。

c# mailkit

0
推荐指数
1
解决办法
2164
查看次数