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) 我真的习惯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()调用.
有人可以解释为什么这个脚本会引发异常吗?
$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) 管理EntityContext生命周期有很多问题,
我得出的结论是,实体上下文应该被视为一个工作单元,因此不能重复使用.大.
但是在进行一些加速我的数据库访问的研究时,我遇到了这篇博文...
该帖子称,EF文件表现不佳相对于其他框架往往是由于EntityConnection对象被每一个新的时间创建的EntityContext需要的对象.
为了测试这一点,我在Global.asax.cs Application_Start()中手动创建了一个静态EntityConnection .
然后我使用语句将我的所有上下文转换为
using( MyObjContext currContext = new MyObjeContext(globalStaticEFConnection)
{
....
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,到目前为止,这似乎已经加快了一点点没有任何错误.
但这样安全吗?
使用应用程序范围的静态EntityConnection是否会引入竞争条件?
最好的问候,凯文
如何控制mod_mono和Apache上运行的ASP.NET应用程序的应用程序回收设置?
在IIS6和7上,当AppDomain被回收并且应用程序基本上执行Application_End()/ Application_Start()时,可以选择指定时间段,多个请求等.
我在mod_mono和Apache上看到了相同的行为,但我无法找到更改设置的位置.
我正在使用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) 我正在尝试将 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 中使用它?
我正在使用ASP.NET Web表单,
当用户提交页面时,会向许多人发送一封电子邮件,这会减缓后退,
发送电子邮件的最佳方式是什么,而不会减慢页面的重新加载速度?
谢谢
我遇到一些问题,让我的网站在会话结束时(用户关闭浏览器)自动注销经过身份验证的用户.
这是我在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)
当我关闭浏览器时,用户仍然登录.如何通过选项让网站忘记用户,以便用户自己决定网站是否应该记住?
提前致谢 :)
中号