我正在使用以下代码发送电子邮件.代码在我的本地计算机中正常运行.但在生产服务器上我收到错误消息
var fromAddress = new MailAddress("mymailid@gmail.com");
var fromPassword = "xxxxxx";
var toAddress = new MailAddress("yourmailid@yourdoamain.com");
string subject = "subject";
string body = "body";
System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network,
UseDefaultCredentials = false,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword)
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)
在我的Gmail A/c上,我从生产服务器运行代码后收到了以下电子邮件
嗨,
最近有人使用您的密码尝试登录您的Google帐户mymailid@gmail.com.此人正在使用电子邮件,客户端或移动设备等应用程序.
如果这是一名试图访问您帐户的劫机者,我们会阻止登录尝试.请查看登录尝试的详细信息:
星期五,2014年1月3日13:56:08 UTC时间地址:xxx.xx.xx.xxx(abcd.net.)地点:Philadelphia PA,Philadelphia,PA,USA
如果您无法识别此登录尝试,则其他人可能会尝试访问您的帐户.您应该立即登录您的帐户并重置密码.
重设密码
如果是您并且您在访问帐户时遇到问题,请完成http://support.google.com/mail?p=client_login中列出的问题排查步骤
您诚挚的,Google帐户团队
我找不到为我的field属性添加唯一约束的方法
public class User
{
[Required]
public int Id { get; set; }
[Required]
// [Index("IX_FirstAndSecond", 2, IsUnique = true)] not supported by core
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我在用
"Microsoft.EntityFrameworkCore": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer": "1.0.1",
"Microsoft.EntityFrameworkCore.SqlServer.Design": "1.0.1",
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
Run Code Online (Sandbox Code Playgroud) 我尝试使用gmail发送邮件,我得到一个例外 The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. i16sm1806350pag.18 - gsmtp
我写的用于发送邮件的代码是
MailMessage mail = new MailMessage();
mail.To.Add(txtEmail.Text.Trim());
mail.To.Add("Secondry@gmail.com");
mail.From = new MailAddress("mysendingmail@gmail.com");
mail.Subject = "Confirmation of Registration on Job Junction.";
string Body = "Hi, this mail is to test sending mail using Gmail in ASP.NET";
mail.Body = Body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
// smtp.Host = "smtp.gmail.com"; //Or …Run Code Online (Sandbox Code Playgroud) 我开发了一个简单的Web应用程序,并且在将来,我希望将其作为多租户来实现.
所以我想直接将连接字符串写入OnConfiguring方法:
public class ApplicationContext : DbContext
{
public DbSet<User> Users { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("connection string from appsettings.json");
base.OnConfiguring(optionsBuilder);
}
}
Run Code Online (Sandbox Code Playgroud)
启动课程:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationContext>();
services.AddMvc();
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能从中提取连接字符串appsettings.json成ApplicationContext类?
我不想为ApplicationContext类创建任何构造函数.
我正在使用Angular反应形式实现登录页面.如果表单无效,则禁用"登录"按钮.
import { Component, OnInit } from '@angular/core';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
@Component({
selector: 'signin',
templateUrl: './signin.component.html'
})
export class SignInComponent implements OnInit {
private signInForm: FormGroup;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
this.buildForm();
}
private buildForm(): void {
this.signInForm = this.formBuilder.group({
userName: ['', [Validators.required, Validators.maxLength(50)]],
password: ['', [Validators.required, Validators.maxLength(50)]]
});
this.signInForm.valueChanges
.subscribe((data: any) => this.onValueChanged(data));
this.onValueChanged();
}
private onValueChanged(data?: any) {
console.log(data);
}
Run Code Online (Sandbox Code Playgroud)
因此,当我在浏览器中启动它时,我预先填充了"userName"和"passwords"字段.在控制台中,我有值'{userName:"email@email.com",密码:""}',因此按钮"login"被禁用.但是,如果我点击页面上的某个地方,它会触发onValueChanged,我会看到'{userName:"email@email.com",密码:"123456"}',并启用按钮"login".
如果我进入隐身模式.我没有预先填充的字段(它们是空的),但是当我填充(选择)值时,在控制台中我看到'{userName:"email@email.com",密码:"123456"}'和按钮"login"无需任何额外点击即可启用.
可能是他们不同的事件?自动填充和自动填充?角度与它们的作用有何不同?
解决它的最佳方法是什么?为什么onValueChanged …
我知道我们不能只读取单选按钮和复选框.我尝试禁用单选按钮和复选框,但在IE中它不清晰可见.
是否可以使用jQuery,CSS,JavaScript等禁用/ readonly?
我有测试和实时数据库.对于测试数据库迁移,我在包管理器控制台中使用Add-Migration ...和Update-Database语法.但对于实时数据库,我想在应用程序启动时以编程方式执行此操作.
以下代码对我没有帮助:
context.Database.Migrate();
Run Code Online (Sandbox Code Playgroud)
Invalid object name 'TempTenants'当我尝试将记录添加到不存在的表时,我有错误.这是我的新表.
但我有_EFMigrationsHistory桌子.而且我的所有迁移都是那些没有应用的迁移.但我没有看到新表.
如果我从测试数据库中手动删除表并尝试重现错误,我将得到相同的结果.
因此,context.Database.Migrate();仅创建包含所有迁移的新数据库(如果它不存在),但不更新(应用迁移)现有数据库.
我能这样做吗?我该如何解决?
我开发.net核心应用程序并使用NLog作为日志框架.
如何设置NLog布局以获取远程IP地址?
不幸的是,NLog.Web.AspNetCore${aspnet-request.serverVariable=remote_addr}不支持.
可能是我可以以httpContext.Connection.RemoteIpAddress某种方式访问.
我正在尝试使用流畅的迁移器使用我的项目进行迁移.但由于缺乏文档,我正在努力弄清楚如何回滚并Down为我的迁移类调用该方法.
我使用初始版本1类设置数据库:
[Migration(1)]
public class Baseline : Migration
{
public override void Up()
{
Execute.Script("1_Baseline\\baseline.sql");
}
public override void Down() { }
}
Run Code Online (Sandbox Code Playgroud)
我正在通过包含以下内容的批处理文件运行迁移:
"....\tools\fluentmigrator\migrate.exe" - connect"Data Source =.\ sqlexpress; Initial Catalog = ekmDomains; Integrated Security = true; multipleactiveresultsets = true;" --db SqlServer2005 --target"bin\Release\EkmDomains.Migrations.dll"
这很好用.然后我写了第二个迁移类来测试它:
[Migration(2)]
public class AddNewTable : Migration
{
public override void Up()
{
Create.Table("NewTable").WithColumn("name").AsString();
}
public override void Down()
{
Delete.Table("NewTable");
}
}
Run Code Online (Sandbox Code Playgroud)
再次运行批处理文件后,一切正常.然后,我查看了流畅的迁移器工具的命令行选项,并看到了一个--version选项.我认为回滚到以前的版本我想简单地提供--version 1和Down的AddNewTable将被调用.然而,这并没有发生.控制台只显示"提交事务"方法然后关闭.但该表尚未删除,版本号未更改.
我这样做的方式是错误的,还是有人能看到我这样做的一些根本缺陷?
我正在将 UI 主题从 Angular 1 移植到 Angular 2。在第 1 个版本中,我有$viewContentLoaded事件,我想将其重新制作为 Angular 2。
我正在尝试使用@HostListener('DOMContentLoaded'),但它不起作用(没有任何错误)。
我该如何解决?或者处理这个问题的最佳方法是什么?
c# ×5
asp.net-core ×3
.net ×2
angular ×2
.net-core ×1
asp.net ×1
autocomplete ×1
autofill ×1
css ×1
gmail ×1
html ×1
iis ×1
javascript ×1
jquery ×1
migration ×1
nlog ×1
smtp ×1
typescript ×1