小编ker*_*vin的帖子

C#如何正确处理SmtpClient?

VS 2010代码分析报告如下:

警告4 CA2000:Microsoft.Reliability:在方法'Mailer.SendMessage()'中,对象'client'未沿所有异常路径放置.对所有对它的引用超出范围之前,在对象'client'上调用System.IDisposable.Dispose.

我的代码是:

public void SendMessage()
    {
        SmtpClient client = new SmtpClient();

        client.Send(Message);
        client.Dispose(); 
        DisposeAttachments(); 
    }
Run Code Online (Sandbox Code Playgroud)

我该如何正确处理客户?

更新:回答Jons问题,这里是dispose附件功能:

private void DisposeAttachments()
{
    foreach (Attachment attachment in Message.Attachments)
    {
        attachment.Dispose();
    }
    Message.Attachments.Dispose();
    Message = null; 
}
Run Code Online (Sandbox Code Playgroud)

最后更新全班上市(简称)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Mail;

public class Mailer
    {
    public MailMessage Message
    {
        get;
        set;
    }

    public Mailer(MailMessage message)
    {
        this.Message = message; 
    }

    public void SendMessage()
    {
        using (SmtpClient client = new SmtpClient())
        { …
Run Code Online (Sandbox Code Playgroud)

c# .net-4.0

31
推荐指数
4
解决办法
3万
查看次数

PowerShell搜索脚本忽略二进制文件

我真的习惯grep -iIr在Unix shell 上做,但我还没有能够获得PowerShell等价物.

基本上,上面的命令递归搜索目标文件夹并忽略二进制文件,因为"-I"选项.此选项也等同于--binary-files=without-match选项,其中显示"将二进制文件视为与搜索字符串不匹配"

到目前为止,我一直在使用Get-ChildItems -r | Select-String我的PowerShell grep替换偶尔Where-Object添加.但我还没有找到一种方法来忽略grep -I命令所做的所有二进制文件.

如何使用Powershell过滤或忽略二进制文件?

所以对于给定的路径,我只想Select-String搜索文本文件.

编辑: 在Google上再制作几个小时这个问题如何识别文件的内容是ASCII还是二进制.问题是"ASCII",但我相信作者的意思是"文本编码",就像我自己一样.

编辑:似乎isBinary()需要编写一个来解决这个问题.可能是一个C#命令行实用程序,使其更有用.

编辑:似乎grep正在做的是检查ASCII NUL字节或UTF-8 Overlong.如果存在,则认为文件是二进制文件.这是一个memchr()调用.

powershell grep

25
推荐指数
2
解决办法
6864
查看次数

访问Array.Length属性后,Powershell脚本失败

有人可以解释为什么这个脚本会引发异常吗?

$byteArray = @(1,2,3)
write-Output ( "{0:X}{1:X}{2:X}" -f $byteArray )
write-Output ( $byteArray.Length -ge 3 )
write-Output ( "{0:X}{1:X}{2:X}" -f $byteArray )
Run Code Online (Sandbox Code Playgroud)

基本上,我正在创建一个数字数组,格式化数组,然后检查其长度并再次格式化它.

第一种格式成功,但第二种格式抛出异常.

123
True
--------------------------------------------------------------------------------
POWERSHELL EXCEPTION 
EXCEPTION TYPE:System.Management.Automation.RuntimeException
MESSAGE:Error formatting a string: Index (zero based) must be greater than or equal to zero and less than the size of the argument list..
POSITION:
At line:4 char:36
+ write-Output ( "{0:X}{1:X}{2:X}" -f  <<<< $byteArray )
--------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

powershell

7
推荐指数
1
解决办法
3686
查看次数

管理EntityConnection生命周期

管理EntityContext生命周期有很多问题,

例如,在LINQ to Entities中实例化上下文

我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重复使用.大.

但是在进行一些加速我的数据库访问的研究时,我遇到了这篇博文...

改善实体框架性能

该帖子称,EF文件表现不佳相对于其他框架往往是由于EntityConnection对象被每一个新的时间创建的EntityContext需要的对象.

为了测试这一点,我在Global.asax.cs Application_Start()中手动创建了一个静态EntityConnection .

然后我使用语句将我的所有上下文转换为

using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
   ....
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,到目前为止,这似乎已经加快了一点点没有任何错误.

但这样安全吗?

使用应用程序范围的静态EntityConnection是否会引入竞争条件?

最好的问候,凯文

.net c# asp.net entity-framework entityconnection

7
推荐指数
1
解决办法
7577
查看次数

mod_mono和Apache上的Appdomain回收设置

如何控制mod_mono和Apache上运行的ASP.NET应用程序的应用程序回收设置?

在IIS6和7上,当AppDomain被回收并且应用程序基本上执行Application_End()/ Application_Start()时,可以选择指定时间段,多个请求等.

我在mod_mono和Apache上看到了相同的行为,但我无法找到更改设置的位置.

apache asp.net mono mod-mono

6
推荐指数
1
解决办法
844
查看次数

在数据库表中重置或更新行位置整数

我正在使用SQL Server 2008中的存储过程来重置数据库表中的整数列.此整数列存储或保持项行的显示顺序.用户可以按特定的排序顺序拖放项目,我们使用此"订单排名整数"在数据库表中保留该顺序.

在检索数据时,对项目的显示查询始终附加"ORDER BY OrderRankInt",以便用户按照先前指定的顺序查看项目.

问题是这个整数列在表项重新排序后收集了大量重复值.因此...

Table
--------
Name | OrderRankInt
a    | 1
b    | 2
c    | 3
d    | 4
e    | 5
f    | 6
Run Code Online (Sandbox Code Playgroud)

经过用户的大量重新排序后......

Table
--------
Name | OrderRankInt
a    | 1
b    | 2
c    | 2
d    | 2
e    | 2
f    | 6
Run Code Online (Sandbox Code Playgroud)

这些重复主要是因为插入和用户指定的订单号.我们并没有试图阻止重复的订单排名,但我们想要一种方法在项目插入/修改上"修复"表格.

有没有办法可以使用单个UPDATE查询重置OrderRankInt列?或者我需要使用光标吗?该光标的语法是什么样的?

谢谢,凯文

编辑

使用Remus Rusanu解决方案进行更新.谢谢!!

CREATE PROCEDURE EPC_FixTableOrder
@sectionId int = 0
AS
BEGIN

-- "Common Table …
Run Code Online (Sandbox Code Playgroud)

sql sql-server stored-procedures cursor

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

TarsosDSP 与 android

我正在尝试将 TarsosDSP 库与 android 一起使用,但它需要使用 javax.sound.sampled 库,据我所知,该库在 android 上不可用。

有没有办法在android中包含javax.sound.sampled包?

我在 - https://github.com/jld/linaro-android-gcc/tree/master/gcc-4.7/libjava/javax/sound/sampled找到了一个库,但这仅包含我知道是标题的 .h 文件文件。有没有办法将这个包编译成一个 jar,然后我可以在 android 中使用它?

java audio android tarsosdsp

3
推荐指数
1
解决办法
4501
查看次数

如何在AsP.NET的后台发送电子邮件?

我正在使用ASP.NET Web表单,

当用户提交页面时,会向许多人发送一封电子邮件,这会减缓后退,

发送电子邮件的最佳方式是什么,而不会减慢页面的重新加载速度?

谢谢

asp.net email sendmail

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

Membershipprovider:会话结束时自动注销

我遇到一些问题,让我的网站在会话结束时(用户关闭浏览器)自动注销经过身份验证的用户.

这是我在web.config中的内容:

<authentication mode="Forms">
    <forms name="AuthCookie" protection="All" loginUrl="~/default.aspx" path="/" cookieless="UseCookies" timeout="2592000"/>
</authentication>

<authorization>
    <allow users="?" />
</authorization>

<membership defaultProvider="ASPPGSqlMembershipProvider" userIsOnlineTimeWindow="20">
    <providers>
        <clear />
        <add name="AspNetSqlMemberShipProvider" applicationName="umbraco4" type="System.Web.Security.SqlMembershipProvider" connectionStringName="UmbracoDb" requiresUniqueEmail="true" enablePasswordReset="true" enablePasswordRetrieval="false"/>
        <add name="UsersMembershipProvider" applicationName="umbraco4" type="umbraco.providers.UsersMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" />
        <add name="ASPPGSqlMembershipProvider" applicationName="umbraco4"
            passwordStrengthRegularExpression="" minRequiredPasswordLength="4" minRequiredNonalphanumericCharacters="0"
            enablePasswordRetrieval="false"
            enablePasswordReset="true"
            requiresQuestionAndAnswer="false"
            requiresUniqueEmail="true"
            forumUpfileFolderPath="D:\www\files"
            type="ASPPG.MembershipProviders.ASPPGSqlMembershipProvider, ASPPGSiteIntegrationPackage"/>
    </providers>
</membership>
Run Code Online (Sandbox Code Playgroud)

这是我登录用户的方式:

if (Membership.ValidateUser(txtUserName.Text, txtPasssword.Text)) {
    HttpCookie cookie = FormsAuthentication.GetAuthCookie(txtUserName.Text, false);
    cookie.Expires = DateTime.Now.AddDays(1);
    cookie.Domain = ConfigurationManager.AppSettings["Level2DomainName"];
    HttpContext.Current.Response.Cookies.Add(cookie);
    Response.Redirect(Request.Url.ToString());
}
Run Code Online (Sandbox Code Playgroud)

当我关闭浏览器时,用户仍然登录.如何通过选项让网站忘记用户,以便用户自己决定网站是否应该记住?

提前致谢 :)

中号

asp.net forms-authentication asp.net-membership remember-me

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