在我的MVC4应用程序中,我使用它SmtpClient通过Gmail的smtp.gmail.comSMTP服务器发送电子邮件.
我已使用以下设置配置了我的Web.Config文件:
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network enableSsl="true"
defaultCredentials="false"
host="smtp.gmail.com"
port="587"
userName="xxMyUserNamexx@gmail.com"
password="xxMyPasswordxx" />
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
使用SmtpClient并发送电子邮件消息的方法如下所示:
public void SendMail(string fromDisplayName, string fromEmailAddress, string toEmailAddress, string subject, string body)
{
MailAddress from = new MailAddress(fromEmailAddress, fromDisplayName);
MailAddress to = new MailAddress(toEmailAddress);
MailMessage mailMessage = new MailMessage(from, to);
mailMessage.Body = body;
mailMessage.Subject = subject;
SmtpClient client = new SmtpClient();
//client.UseDefaultCredentials = false;
client.Send(mailMessage);
}
Run Code Online (Sandbox Code Playgroud)
上面的代码按预期工作,很好.令我困惑的是注释行client.UseDefaultCredentials = false;- 如果我要取消注释该行,我将收到一条异常消息,指出:
SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.
更重要的是,如果我将UseDefaultCredentials属性设置为true或者 …
我正在测试Visual Studio 2010中的Xamarin.Android并且注意到当我在Android Layout(.axml)文件中工作时我没有Android Intellisense.但是,当我在.cs文件中工作时,我确实得到了Android Intellisense.
例:
以下是我的Main.axml文件的屏幕截图,该文件位于我的Layout目录中.注意intellisense如何在Android命名空间中不包含任何内容.

我需要做什么才能让intellisense在.axml文件中显示Android命名空间?
我最近在Windows Server 2008 R2计算机上安装了Visual Studio 2010和SQL Server 2012(包括所有更新/ Service Pack).
尝试从Visual Studio中处理SQL Server数据库时,VS会引发以下错误:
不支持此服务器版本.仅支持最多Microsoft SQL Server 2008的服务器
我记得当我将SQL Server 2008实例更新到SQL Server 2008 R2时,一段时间(在另一台计算机上)得到同样的错误.当时的修复是安装(或重新安装)Visual Studio 2010 SP1.
现在我再次收到此错误(在新计算机上),我认为重新安装VS SP1就像我回过头一样.但是,这样做并没有解决问题.
似乎Visual Studio可能需要另一个更新来支持SQL Server 2012实例.
为清楚起见,以下是我为产生错误所采取的步骤:(使用VS 2010sp1和SQL2012)
任何它的价值的屏幕截图..

我的问题是,有没有解决这个问题?如果是这样,它是什么?
sql-server visual-studio visual-studio-2010-sp1 sql-server-2012 sql-server-2012-express
我有一个数据库表,其中定义了唯一键约束,以避免发生重复记录.
我很好奇,如果在表上运行INSERT语句之前不手动检查重复记录是不好的做法.
换句话说,我应该使用WHERE子句运行SELECT语句,该子句检查我将要INSERT的记录的重复值.如果找到记录,则不要运行INSERT语句,否则继续运行INSERT ....
要么
只需运行INSERT语句并尝试/捕获由于Unique Key违规而可能引发的异常.
我正在权衡这两个观点并且无法确定哪个是最好的 - 1.当我可以捕获异常VS 2时,不要浪费SELECT调用来检查重复项.不要因为实现丑陋的尝试而懒惰抓住逻辑VS 3. ???你的想法在这里?:)
.NET 3.5 C#是否允许我们在字符串变量中包含变量,而不必使用+ concatenator(或string.Format()).
例如(在伪,我使用$符号来指定变量):
DateTime d = DateTime.Now;
string s = "The date is $d";
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)
输出:
日期是4/12/2011 11:56:39 AM
编辑
由于提示string.Format()的一些响应,我只能假设当我提到" ...(或string.Format(),就此而言)时,我的原始帖子不清楚".要清楚,我很清楚string.Format()方法.但是,在我正在处理的特定项目中,string.Format()对我没有帮助(实际上比+连接器更差).
另外,我推断大多数/你们都想知道我的问题背后的动机是什么(我想如果我按原样阅读我的问题,我会有同样的感受).
如果你是一个好奇的人,这就是它的缺点:
我正在创建一个在Windows CE设备上运行的Web应用程序.由于Web服务器的工作原理,我在字符串变量中创建了整个网页内容(css,js,html等).例如,我的.cs托管代码可能有这样的东西:
string GetPageData()
{
string title = "Hello";
DateTime date = DateTime.Now;
string html = @"
<!DOCTYPE html PUBLIC ...>
<html>
<head>
<title>$title</title>
</head>
<body>
<div>Hello StackO</div>
<div>The date is $date</div>
</body>
</html>
";
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,能够在不需要连接的情况下指定变量,使事情变得更容易 - 特别是当内容增加时.
在我的应用程序中,我需要允许用户右键单击图像以将图像保存到磁盘.但是,我注意到,使用我的特定代码,谷歌浏览器是唯一不允许用户"将图像另存为..."的浏览器,除非用户首先选择Open image in new tab,然后从那里选择Save image as...
由于所有其他主流浏览器(包括移动Chrome)都按预期工作,我不确定我是不是以标准/正确的方式实现我的代码,或者问题是否与Chrome有关.
例:
以下HTML是我正在做的精简版.它将允许您单击按钮以打开将包含图像的新窗口.
要测试/确认我上面描述的问题,请右键单击图像并选择Save image as..- 您应该注意到没有任何反应.但是,如果右键单击图像并选择Open image in new tab,则可以Save image as..从那里进行操作.
<html>
<head>
<title></title>
<script>
function foo() {
var tab = window.open();
tab.document.write('<p>Right-click, then click "Save image as ..."</p><img src="http://cdn.sstatic.net/Sites/stackoverflow/company/img/logos/so/so-icon.png" />');
}
</script>
</head>
<body>
<button onclick="foo();">Open</button>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是Chrome存在的问题,或者是有另一种方式,我可以使用window.open()连同document.write()获得Chrome浏览器像其他浏览器(即不必首先选择Open image in new tab.
我有一个Visual Studio安装程序项目,我在Visual Studio 2010中,我无法弄清楚如何从向导的对话框中删除"欢迎使用[产品名称]安装向导"文本.
例如:如何从下面的屏幕截图中删除文本"欢迎使用Setup1安装向导"?

我已经安装了一个安装在c:\Program Files\My Service目录中的Windows服务.与可执行文件一起,我有一个安装在同一目录中的XML文件.服务使用此XML文件来获取用户定义的信息.
在服务的代码中,我读取文件就好像它是可执行文件的本地文件一样.例如:
DataSet ds = new DataSet();
ds.ReadXml("Foo.xml");
Run Code Online (Sandbox Code Playgroud)
但是,当我运行该服务时,该服务抛出一个异常说:
找不到文件'C:\ Windows\system32\Foo.xml'
由于可执行文件存在于c:\Program Files\My Service我希望Windows服务中查找XML文件c:\Program Files\My Service\Foo.xml.显然,事实并非如此.
如何强制服务在服务可执行文件所在的同一位置查找(相对)Foo.xml文件?
我遇到了一个IE调用JavaScript的错误.length如果/当字符串派生时,函数返回一个值为1的值.toLocaleString().
var d = new Date();
var locale = navigator.language;
var month = d.toLocaleString(locale, { month: "long"});
// month.length will return the length of the month string +1
//(eg: if month = "March", month.length will return 6.)
Run Code Online (Sandbox Code Playgroud)
有趣的是,上面的代码示例将为以下内容返回true(在IE中):( month [0]应为"M")
month[0] == "";
month[1] == "M";
month[2] == "a";
month[3] == "r";
month[4] == "c";
month[5] == "h";
Run Code Online (Sandbox Code Playgroud)
在我的特定情况下,这导致我需要.slice()一个月的问题.示例:如果月份是3月,则IE将返回"Ma" month.slice(0,3)而不是"Mar".
这是IE的已知错误吗?是否有针对此问题的修复和/或解决方法?
在IE和Chrome/Firefox/Safari中运行这个小提琴并注意month.lengthIE中的错误.
我的环境:
操作系统:Win Server 2012 R2
IE版本:11.0.9600.18231(更新版本:11.0.29)
地区:英语/美国
使用MVC 3 Razor,如何在调用中指定变量@Url.Content().
例:
@{
var myVar = Request.QueryString["foo"];
}
<a href="@Url.Content("~/bar?@myvar")">click here</a>
Run Code Online (Sandbox Code Playgroud) c# ×2
.net-3.5 ×1
asp.net-mvc ×1
installer ×1
intellisense ×1
javascript ×1
key ×1
locale ×1
razor ×1
save-image ×1
select ×1
smtpclient ×1
sql ×1
sql-server ×1
string ×1
unique ×1
window.open ×1