我正在尝试将传入请求的时间戳与数据库存储值进行比较.SQL Server当然会保留一些毫秒的精度,当读入.NET DateTime时,它包括那些毫秒.但是,对系统的传入请求不提供该精度,因此我需要简单地删除毫秒.
我觉得我错过了一些明显的东西,但我还没有找到一种优雅的方法(C#).
我看到的所有时间的例子似乎都不是最理想的,因为它涉及连接字符串,这似乎不是jQuery.它通常看起来像这样:
$.getJSON("/Admin/GetFolderList/", function(result) {
for (var i = 0; i < result.length; i++) {
options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
}
});
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
将第三方登录集成到ASP.NET应用程序的OWIN中间件非常酷,但我似乎无法弄清楚如何从新的ID框架中删除它来取代糟糕的Membership API.我对在基于EF的数据持久性中持久化声明和用户信息不感兴趣,我只想要声明信息,以便我可以将它应用于我自己在现有项目中的用户帐户.我不想采用新的ID框架来利用这些东西.
我一直在浏览CodePlex上的代码,但是有很多静态魔法.你能提出任何建议吗?
我正在尝试将我的auth资源迁移到Core 2.0并使用我自己的身份验证方案出现问题.我在启动时的服务设置如下所示:
var authenticationBuilder = services.AddAuthentication(options =>
{
options.AddScheme("myauth", builder =>
{
builder.HandlerType = typeof(CookieAuthenticationHandler);
});
})
.AddCookie();
Run Code Online (Sandbox Code Playgroud)
我在控制器中的登录代码如下所示:
var claims = new List<Claim>
{
new Claim(ClaimTypes.Name, user.Name)
};
var props = new AuthenticationProperties
{
IsPersistent = persistCookie,
ExpiresUtc = DateTime.UtcNow.AddYears(1)
};
var id = new ClaimsIdentity(claims);
await HttpContext.SignInAsync("myauth", new ClaimsPrincipal(id), props);
Run Code Online (Sandbox Code Playgroud)
但是当我在控制器或动作过滤器中时,我只有一个身份,而且它不是经过身份验证的身份:
var identity = context.HttpContext.User.Identities.SingleOrDefault(x => x.AuthenticationType == "myauth");
Run Code Online (Sandbox Code Playgroud)
导航这些变化一直很困难,但我猜我正在做.AddScheme错了.有什么建议?
编辑:这里(基本上)是一个干净的应用程序,不会在User.Identies上产生两组身份:
namespace WebApplication1.Controllers
{
public class Testy : Controller
{
public IActionResult Index()
{
var i = HttpContext.User.Identities; …Run Code Online (Sandbox Code Playgroud) 我正在使用IHttpHandler从数据库提供图像.相关代码在这里:
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "image/jpeg";
int imageID;
if (int.TryParse(context.Request.QueryString["id"], out imageID))
{
var photo = new CoasterPhoto(imageID);
if (photo.CoasterPhotoID == 0)
context.Response.StatusCode = 404;
else
{
byte[] imageData = GetImageData(photo);
context.Response.OutputStream.Write(imageData, 0, imageData.Length);
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(5));
context.Response.Cache.SetLastModified(photo.SubmitDate);
}
}
else
context.Response.StatusCode = 404;
}
Run Code Online (Sandbox Code Playgroud)
问题是浏览器不会缓存图像,大概是因为我没有在响应头中指出正确的东西.我认为HttpCachePolicy属性上的部分调用方法会强制浏览器保留图像,但事实并非如此.我认为"正确"的事情是处理程序返回没有图像的304状态代码,对吧?如何使用IHttpHandler实现这一目标?
编辑:
根据最佳答案,我运行了此代码,它完全解决了问题.是的,它需要一些重构,但它通常会证明我追求的是什么.相关部分:
if (!String.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"]))
{
CultureInfo provider = CultureInfo.InvariantCulture;
var lastMod = DateTime.ParseExact(context.Request.Headers["If-Modified-Since"], "r", provider).ToLocalTime();
if (lastMod == photo.SubmitDate)
{
context.Response.StatusCode = 304;
context.Response.StatusDescription = "Not Modified";
return;
}
}
byte[] imageData …Run Code Online (Sandbox Code Playgroud) 在ASP.NET MVC中引用Javascript的正确方法是什么?使用像../../Scripts/Myscript.js这样的东西似乎适用于传统{controller}/{action}/{id}的路由,但对于比这更复杂或更复杂的东西更脆弱.更值得关注的是,理性绝对引用(/Scripts/Myscript.js)在Visual Studio中打破了Intellisense.
你怎么处理它?
编辑:这显然是一个非常古老的问题,但我正在编辑提到在MVC4中,你只需要这样:
src="~/Scripts/Whatever.js"
Run Code Online (Sandbox Code Playgroud)
这足以让Razor使用根路径找出你的意思.
我在开源项目中调试OWIN包升级时遇到了困难.简短的描述是当我从v2.1升级时,在新的v3版本中使用外部登录会中断,并且在调试过程中我无法弄清楚有什么不同.请记住,我的代码都没有更改,我只更新了OWIN组件(Microsoft.Owin中的软件包和其他子名称空间).
它从这个表格帖子开始:
<form action="/Forums/Authorization/ExternalLogin?ReturnUrl=http%3A%2F%2Flocalhost%3A1973%2FForums" method="post"><input name="__RequestVerificationToken" type="hidden" value="--verificationtoken--" /> <h2>External Logins</h2>
<p>
<button type="submit" id="Google" name="provider" value="Google" class="btn btn-primary">Google</button>
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
它发布到这个方法:https: //github.com/POPWorldMedia/POPForums/blob/v13.0.0/PopForums/Controllers/AuthorizationController.cs
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult ExternalLogin(string provider, string returnUrl)
{
return new ChallengeResult(provider, Url.Action("ExternalLoginCallback", "Authorization", new { loginProvider = provider, ReturnUrl = returnUrl, area = "PopForums" }));
}
Run Code Online (Sandbox Code Playgroud)
回调落在这里:
public async Task<ActionResult> ExternalLoginCallback(string loginProvider, string returnUrl)
{
var authentication = _owinContext.Authentication;
var authResult = await _externalAuthentication.GetAuthenticationResult(authentication);
if (authResult == null)
return RedirectToAction("Login", "Account", new { error …Run Code Online (Sandbox Code Playgroud) 两者有什么区别
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(environment.API_URL + "invoicinghub", {
skipNegotiation: true,
transport: signalR.HttpTransportType.WebSockets
})
.withAutomaticReconnect([0, 2000, 10000, 30000, null])
.build();
Run Code Online (Sandbox Code Playgroud)
和
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(environment.API_URL + "invoicinghub", {
transport: signalR.HttpTransportType.WebSockets
})
.withAutomaticReconnect([0, 2000, 10000, 30000, null])
.build();
Run Code Online (Sandbox Code Playgroud)
这是什么skipNegotiation:true。
谢谢!
我有一个非常大的数据库,我正在尝试迁移到SQL Azure,大约1.6演出.我在blob存储中有BACPAC文件,启动导入,然后......没有.就状态而言,它达到了5%,否则无处可去.10小时后,数据库大小似乎为380 MB,监控平均每小时显示约53个成功连接,没有出现故障.它似乎还在继续.
我把相同的BACPAC带到了家里的本地机器上,我可以在不到三分钟的时间内导入同一个数据库,所以我假设文件的完整性都很好.
这可能是什么问题?我不能只是保持应用程序我正在离线数天,而这一直在继续.必须有一些根本不同的东西,它正在窒息.
我确信我忽略了一些明显的东西,但我有一个 Razor 类库,我在其中编译我的 MVC 视图,并在编译为单个 Javascript 文件的 Typescript 中编写我的客户端内容。我有一个使用 RCL 的 Web 项目。当我在 RCL 中更改 .cshtml 视图时,Web 项目会尽职尽责地确认更改并刷新浏览器。但是,当我更改 .ts 文件(这会触发 Typescript 编译器并输出 .js 文件)时,它不会刷新依赖的 Web 项目中的浏览器。
现在,我可能把它过于复杂化了。我的 RCL 项目如下所示:
/Client
--/src
----tsconfig.json
----tsfiles.ts
--/dist/outputfile.js
/wwwroot
--/dist/outputfile.js
Run Code Online (Sandbox Code Playgroud)
/Client/dist我有一个从 复制到的 gulpfile /wwwroot/dist。我的tsconfig.json看起来像这样:
{
"compileOnSave": true,
"compilerOptions": {
"target": "es6",
"sourceMap": true,
"outFile": "../dist/Client.js",
"experimentalDecorators": true,
"noImplicitAny": true,
"suppressImplicitAnyIndexErrors": true
}
}
Run Code Online (Sandbox Code Playgroud)
我被困住了,因为我不明白潜在的魔力。更改RCL 中的任何文件都会在浏览器中触发热重载,查看引用 RCL 的 Web 项目。 .cshtml当我更新文件时什么也没有发生.ts,显然 gulp 文件也不会触发。我必须重建网络项目才能获取最新的垃圾。
我想要的结果是,.ts在 RCL …
asp.net ×5
c# ×4
.net ×3
asp.net-mvc ×3
asp.net-core ×2
azure ×2
owin ×2
.net-core ×1
datetime ×1
ihttphandler ×1
javascript ×1
jquery ×1
select ×1
signalr ×1
sql ×1
sql-server ×1
typescript ×1
websocket ×1