我正在开发 MVC5 网站。本网站包含“联系我们”表格,用户可以在其中联系网站支持。
问题是SendMailAsync 至少需要 10-13 秒才能完成(无附件),并且在此过程运行时,用户被卡住并等待服务器的响应 - 无论电子邮件是否成功发送。
这是我当前的 ActionResult 方法:
[HttpPost]
public async Task<ActionResult> Contact(MessageModel Model)
{
//...
await SendMessage(Model);
//...
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是我负责发送电子邮件的方法:
private async Task SendMessage(MessageModel Model)
{
var Message = new MailMessage();
Message.From = ...;
Message.To.Add(...);
Message.Subject = ...;
Message.IsBodyHtml = true;
SmtpClient Client = new SmtpClient();
Client.UseDefaultCredentials = false;
Client.Credentials = ...;
Client.Port = 587;
Client.Host = "smtp.office365.com";
Client.DeliveryMethod = SmtpDeliveryMethod.Network;
Client.EnableSsl = true;
await Client.SendMailAsync(Message);
}
Run Code Online (Sandbox Code Playgroud)
有没有更快的工作替代方案?我可以这样运行它:
await Task.Factory.StartNew(() …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个需要4个参数的存储过程.这4个参数决定了返回表的外观.
@C_ID参数始终为数字.@U_ID和@P_ID值可以包含有效的数值,或者可以(或应该)传递,NULL因为WHERE条件执行或不执行.
ALTER PROCEDURE [dbo].[GetData]
@C_ID integer,
@U_ID integer = Null,
@P_ID integer = Null,
@SortIndex integer = 1
AS
BEGIN
SELECT
ID, P_ID, U_Name, P_Name,
FORMAT(Date_When, 'dd/MM/yyyy hh:mm tt')
FROM
SomeTable
WHERE
C_ID = @C_ID
AND (@P_ID IS NULL OR P_ID = @P_ID)
AND (@U_ID IS NULL OR U_ID = @U_ID)
ORDER BY
CASE WHEN @SortIndex = 1 THEN -ID
ELSE ID
END ASC
END
Run Code Online (Sandbox Code Playgroud)
在SQL Server 2014上,以下执行工作正常,没有任何错误:
exec GetData …Run Code Online (Sandbox Code Playgroud) 我有一个基于以下类的ObservableCollection:
public class Data
{
public string Text { get; set; }
public DateTime Date { get; set; }
public bool IsActive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
使用此observablecollection并将其绑定为ListView的ItemSource。以下是用于显示数据的DataTemplate-
<DataTemplate>
<ViewCell>
<Frame OutlineColor="White" HasShadow="False">
<!-- Data -->
</Frame>
</ViewCell>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
由于ObservableCollection是具有boolean属性的Data类的集合,因此我想使用它来更改框架的背景色:
如果属性IsActive为true-BackgroundColor为Red
如果属性IsActive为false-BackgroundColor为蓝色
我已经研究了触发器的实现,但是似乎无法使其正常工作,并且不确定所缺少的内容。
根据Xamarin文档,我应该能够:
<Frame>
<Frame.Trigger>
<!-- -->
</Frame.Trigger>
</Frame>
Run Code Online (Sandbox Code Playgroud)
但是,这似乎是不可能的。这也不是-
<Frame>
<Frame.Style>
<Style TargetType="Frame">
<Setter Property="BackgroundColor" Value="Blue" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive}" Value="True">
<Setter Property="BackgroundColor" Value="Red"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Frame.Style>
</Frame>
Run Code Online (Sandbox Code Playgroud)
上面的代码给出以下错误消息:
Xamarin.Forms.Xaml.XamlParseException: Position 28:26. …Run Code Online (Sandbox Code Playgroud) 我正在处理一个涉及Azure IOT集线器和Azure功能的Azure项目。
我大约有50个传感器,每10秒会向IOT集线器发送一条新消息。
每次Azure IOT Hub收到新消息时,我都想执行一个函数,该函数读取发送的消息并将其保存到Azure表存储中。
此刻,我对应该使用哪种Azure Table存储设计有些困惑。到目前为止,这是我建议的表存储设计:
[PartitionKey][RowKey][TimeStamp][SensorSerial][Reading][Type]
Run Code Online (Sandbox Code Playgroud)
这是Azure存储资源管理器中数据外观的模拟:
[GroupA][?][2017-05-03T12:20:22.713Z][xxx][60][Temperature]
[GroupA][?][2017-05-03T12:25:22.713Z][xxx][61][Temperature]
[GroupA][?][2017-05-03T12:30:22.713Z][xxx][59][Temperature]
[GroupB][?][2017-05-03T12:35:22.713Z][yyy][90][Humidity]
[GroupB][?][2017-05-03T12:40:22.713Z][yyy][92][Humidity]
Run Code Online (Sandbox Code Playgroud)
我将RowKey留在“?” 目前,因为它与手头的问题有关。
该问题是,那我希望能够查询既基于SensorSerial表存储的数据和规定的时间框架 - 如得到最后15秒所有XXX读数。
以下查询始终不返回任何数据:
TableQuery<Readings> rangeQuery = new TableQuery<Readings>().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("SensorSerial", QueryComparisons.Equal, "xxx"),
TableOperators.And,
TableQuery.GenerateFilterConditionForDate("TimeStamp",
QueryComparisons.GreaterThanOrEqual, DateTime.Now.AddSeconds(-15))));
Run Code Online (Sandbox Code Playgroud)
从到目前为止的内容来看,我不确定为什么会这样- 无法基于TimeStamp字段过滤数据。因此,必须将RowKey用作某种伪TimeStamp日期时间刻度字段。
因此,为了解决此问题,我计划将其用作RowKey值
var RowKey = string.Format("{0:D19}", DateTime.MaxValue.Ticks - DateTime.UtcNow.Ticks);
Run Code Online (Sandbox Code Playgroud)
这将满足此查询并返回必要的值:
TableQuery<Readings> query = new TableQuery<SensorEntity>().Where(
TableQuery.CombineFilters(
(TableQuery.GenerateFilterCondition("SensorSerial", QueryComparisons.Equal, "xxxx")),
TableOperators.And,
(TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.LessThanOrEqual,
"2519084875883616261"))));
Run Code Online (Sandbox Code Playgroud)
但是,在这里我可能是错的,由于以下原因,这种方法可能会引起一些问题:
如果两个或多个传感器同时/间隔传输数据怎么办?RowKey必须是唯一的,当一个传感器向Azure存储中插入新行时,另一传感器将无法继续。
我可以运行该代码,希望传输/数据处理/插入会导致足够的延迟,而不会导致任何问题,但是依靠它会很糟糕。
有没有更好的办法?一种更安全的故障排除方法,允许我根据指定的时间和唯一的设备标识符查询Azure数据表存储吗?
我刚开始使用Angular和NativeScript,对于我的生活,我无法弄清楚为什么我无法获得对组件的引用.
首先,我使用以下命令生成初始文件:tns create Test -ng.
接下来,我创建以下文件结构:
App_Resource
components
---app
------app.component.ts
---create
------create.component.ts
------create.component.html
app.module.ts
app.routing.ts
main.ts
Run Code Online (Sandbox Code Playgroud)
这是app.component.ts
import { Component } from "@angular/core";
import { Router } from "@angular/router";
@Component({
selector: "my-app",
template: "<page-router-outlet></page-router-outlet>"
})
export class AppComponent { }
Run Code Online (Sandbox Code Playgroud)
这是create.component.ts
import { Component } from "@angular/core";
import { Location } from "@angular/common";
import { Router } from "@angular/router";
import * as AppSettings from "application-settings";
@Component({
selector: "create",
templateUrl: "./components/create/create.component.html",
})
export class CreateComponent …Run Code Online (Sandbox Code Playgroud) 给定以下类和层次结构:
public abstract class AbsractClass<T>
{
public T Id { get; private set; }
}
public class ImplementationA : AbsractClass<Guid> { }
public class ImplementationB : AbsractClass<int> { }
Run Code Online (Sandbox Code Playgroud)
我应该在where子句/约束中使用什么约束来指定泛型 T 必须是 AbsractClass 的实现。这意味着实体将接受ImplementationA 或ImplementationB。
public abstract class Entity<T> // where : T ?
{
}
Run Code Online (Sandbox Code Playgroud)
这是可能的还是我应该使用接口?
c# ×5
.net-core ×1
angular ×1
asp.net-mvc ×1
azure ×1
email ×1
mvvm ×1
nativescript ×1
sql ×1
sql-server ×1
xaml ×1