在我们的应用程序中,我们使用临时css转换作为页面转换.
随着最新版本的谷歌浏览器(37),这停止了工作.转型不再是一种观点.
摆弄开发人员工具我可以通过更改父元素的透视定义来恢复正确的行为
perspective: 2000px;
Run Code Online (Sandbox Code Playgroud)
至
transform: perspective(2000px);
Run Code Online (Sandbox Code Playgroud)
我的问题是:我们现有的声明有什么问题(使用perspectice属性)还是google chrome中的一个错误?
我尝试重新创建下面的问题,但在缩减的例子中,我看到相反的效果,现在透视工作和转换:透视不.
有什么想法吗?
.perspective-Parent {
/*-moz-transform: perspective(2000px);
-ms-transform: perspective(2000px);
-o-transform: perspective(2000px);
-webkit-transform: perspective(2000px);
transform: perspective(2000px);*/
-moz-perspective: 2000px;
-ms-perspective: 2000px;
-webkit-perspective: 2000px;
perspective: 2000px;
-moz-perspective-origin: 50% 50%;
-ms-perspective-origin: 50% 50%;
-webkit-perspective-origin: 50% 50%;
perspective-origin: 50% 50%;
}
.page {
background-color: red;
-moz-transform-origin: right center;
-ms-transform-origin: right center;
-o-transform-origin: right center;
-webkit-transform-origin: right center;
transform-origin: right center;
-ms-transform: rotateY(75deg);
-moz-transform: rotateY(75deg);
-o-transform: rotateY(75deg);
-webkit-transform: rotateY(75deg);
transform: rotateY(75deg);
width: 200px;
height: 100px;
}Run Code Online (Sandbox Code Playgroud)
<p> …Run Code Online (Sandbox Code Playgroud)在开发通用Windows应用程序(uwp)时,我经常需要查找如何在XAML中执行不同的操作.
一个问题是,我经常会得到一个不适用于UWP应用程序的WPF或Silverlight或Windows Phone解决方案.各种方言之间是否存在差异?
如果没有,这可能是即将发布的stackoverflow文档功能的一部分.我非常愿意参与我已经意识到的事情.
我使用Google Chrome开发人员工具中的审核功能检查了我们的网络应用程序.
首先我得到一个警告,表明我们正在为静态内容提供无法缓存:"以下资源明确是不可缓存的.如果可能,请考虑使用可缓存的内容".
为了解决这个问题,我将这个代码段添加到了我们的web-config中
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
</staticContent>
Run Code Online (Sandbox Code Playgroud)
正如本博文中的建议:http: //blogs.msdn.com/b/carlosag/archive/2009/06/09/are-you-caching-your-images-and-scripts-iis-seo-can-tell -you.aspx
如果我现在在Google Chrome中启动新审核,我会收到一条新警告:
以下可公开缓存的资源包含Set-Cookie标头.此安全漏洞可能导致多个用户共享cookie.
你能解释一下潜在的安全威胁以及Asp.net中可能的解决方案吗?
[更新]
经过一些更多的研究,我想这可能与这个问题有关:
为什么ASP.NET在静态图像请求上形成身份验证设置cookie?
但我无法将这个难题放在一起.情况并不完全相同,而我们的应用程序可以配置为使用表单身份验证,我在使用Windows身份验证时收到警告.
正如在另一个问题中提到的,我们在项目中结合Silverlight导航框架使用WCF-RIA服务.部分是搜索功能.搜索按钮将导航到特殊搜索页面,将搜索查询放入URL,然后在服务器上触发RIA请求.
对于此请求,我们使用此属性启用了客户端输出缓存:
[OutputCache(OutputCacheLocation.Client, duration: 2 * 60)]
Run Code Online (Sandbox Code Playgroud)
现在,有时(特别是在演示中)我们的用户知道,底层数据源已经改变,他们想要刷新搜索以查看当前结果.
设置LoadOperations LoadBehavior不会刷新缓存.
现在我们有一个(部分)解决方案:我们为我们的服务添加了一个特殊的缓存计数器属性.该属性被服务忽略,仅用于解决缓存问题.每当用户点击搜索按钮时,缓存计数器就会增加,我们会在缓存中工作.如果用户向后或向前导航到搜索页面,则从Url检索搜索计数器,并且该请求由缓存提供.
现在的问题是:是否有更好的方法来强制刷新客户端缓存?
此外:如果用户选择浏览器刷新按钮刷新搜索页面,我们的解决方法将失败.在这种情况下,缓存计数器仍然从URL中获取,并且从缓存而不是服务器检索数据.我发现没有办法从我们的Silverlight客户端检测刷新(我已经看到一个使用服务器端会话变量的建议,这不是一个选项,因为我们的服务器是完全无状态的).
我们在项目中使用WCF-RIA服务.部分是搜索,它将在服务器上触发RIA请求.
对于此请求,我们使用此属性启用了客户端输出缓存:
[OutputCache(OutputCacheLocation.Client, duration: 2 * 60)]
Run Code Online (Sandbox Code Playgroud)
我们希望使用客户端缓存,因为要缓存的信息是特定于用户的.问题是,在IIS中安装应用程序后,缓存在Firefox和IE中工作正常,但调试IE时似乎忽略了缓存.
也许这不是一个真正的RIA服务特定问题,而是更多的IE问题.它看起来像IE看到"嘿,这是对localhost的请求,我不想缓存那个"(某种功能).
这有点无益,因为调试情况与"实时"情况不同.
有没有办法在调试时在IE中使用WCF-RIA Services客户端缓存?
在我们的Asp.Net应用程序中,我们有一个IHttpHandler处理图像请求.使用特殊id调用Handler,该id标识图像缓存中的图像.一旦图像投入现金,它就永远不会改变.我的问题是:
是否可以在没有实际检查给定日期的情况下始终为具有"If-Modified-Since"标头的请求返回http状态代码304?原因是浏览器必须已经拥有该映像的副本(因为它提供了modified-since标头).
这将使生活更轻松,因为我们(尚未)跟踪图像创建日期.
这是实际代码(更新:我现在在Aristos推荐的服务器响应中包含了if-modified标头):
public void ProcessRequest(HttpContext context)
{
if (!String.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"])) {
//Is this okay?
context.Response.StatusCode = 304;
context.Response.StatusDescription = "Not Modified";
return;
}
var thumbnailId = context.Request.QueryString["thumbnail"];
using (var thumbnailCache = new CThumbnailCache()) {
var imageBytes = thumbnailCache.GetImageById(thumbnailId);
context.Response.ContentType = "image/png";
var outputStream = context.Response.OutputStream;
outputStream.Write(imageBytes, 0, imageBytes.Count());
context.Response.Cache.SetCacheability(HttpCacheability.Public);
context.Response.Cache.SetLastModified(DateTime.UtcNow);
// added after Aristos post
context.Response.AddHeader("If-Modified-Since", DateTime.UtcNow.ToString("r"));
const int maxAge = 86400 * 14; // 14 Tage
context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(maxAge));
context.Response.Cache.SetMaxAge(new TimeSpan(0, 0, maxAge));
context.Response.CacheControl = "private";
context.Response.Cache.SetValidUntilExpires(true);
}
}
Run Code Online (Sandbox Code Playgroud) 我通过实现dotless.Core.Loggers.ILogger接口创建了一个自定义记录器.
现在我尝试通过在web.config中配置它来使用此记录器,如下所示:
<dotless minifyCss="false" cache="false" web="false" logger="company.product.server.dotLess.CLessLogger" log="debug" />
Run Code Online (Sandbox Code Playgroud)
问题是:没有写入跟踪,我的自定义记录器从不被调用/创建.
如果我将记录器更改为其中一个标准记录器,如ResponseLogger:
<dotless minifyCss="false" cache="false" web="false" logger="dotless.Core.Loggers.AspResponseLogger" log="debug" />
Run Code Online (Sandbox Code Playgroud)
我按预期在响应中收到日志消息.
自定义记录器的代码只是将日志记录转发给我们自己的跟踪器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using company.product.server.tools.trace;
using dotless.Core.Loggers;
using log4net.Core;
namespace company.product.server.dotLess
{
public class CLessLogger : dotless.Core.Loggers.ILogger
{
public CLessLogger()
{
CTracerFactory tracerFactory = new CTracerFactory();
m_tracer = tracerFactory.GetTracer(this.GetType().ToString());
}
public void Log(LogLevel level, string message)
{
switch(level) {
case LogLevel.Debug:
Debug(message);
break;
case LogLevel.Error:
Error(message);
break;
case LogLevel.Info:
Info(message);
break;
case LogLevel.Warn:
Warn(message);
break; …Run Code Online (Sandbox Code Playgroud) 我有一个针对Windows 8.1和Windows Phone 8.1的通用应用程序.
我现在想要创建一个Windows 10版本的应用程序.但我仍然希望维护现有的Windows 8.1和Windows Phone应用程序.
我可以在(旧)通用8.1应用程序和Windows通用应用程序之间共享代码吗?
我想象一个像这样的项目结构:
目前我有:
我想为Windows 10添加另一个项目:
引用现有的Shared项目.
这是一种可行的方法吗?或者什么是更好的方法?
这个问题听起来与此类似:
但我已经在C#中的字符串文字前面了解@ -character的含义.
但是现在我在一个例子中看到了这个:
var xml = $@"<toast>
<visual>
<binding template='ToastGeneric'>
<text>text</text>
</binding>
</visual>
<audio src='ms-winsoundevent:Notification.Looping.Alarm10' loop='true'/>
</toast>";
Run Code Online (Sandbox Code Playgroud)
@还有额外的$.这是什么意思?
适用于Windows 10应用程序的响应式设计指南介绍了响应式设计技术,特别是针对特定大小类使用设计断点:
设计特定大小类的断点
Windows 10生态系统中的设备目标和屏幕大小数量太多,无法为每个服务器优化UI.相反,我们建议设计几个键宽(也称为"断点"):320,720和1024 epx.
请参阅:https://msdn.microsoft.com/en-us/library/windows/apps/dn958435.aspx#sizeclasses
本文描述了响应式设计和设计断点的一般概念.我已经熟悉HTML和CSS媒体查询中的这些概念.但我不知道如何在XAML中做到这一点?
搜索Windows 10和设计断点不会产生我想要的信息,你能指出我正确的方向吗?
xaml responsive-design win-universal-app windows-10 windows-10-mobile
我已经读过这个问题: 你如何将JavaScript日期转换为UTC?
基于此,我在dateTools模块中实现了这个转换,如下所示:
[更新]
var dt, utcTime;
dt = new Date();
utcTime = new Date(Date.UTC(dt.getFullYear(),
dt.getMonth(),
dt.getDate(),
dt.getHours(),
dt.getMinutes(),
dt.getSeconds(),
dt.getMilliseconds()));
Run Code Online (Sandbox Code Playgroud)
现在我想写单元测试.我的想法是检查结果是否实际上是UTC,但我不知道如何.
对于输入(非UTC)和输出(UTC)日期,所有toString,toUTCString和类似方法似乎都是相同的.
只有getTime方法的结果不同.
有没有办法检查javascript中的日期是UTC?如果没有,是否有更好的想法进行单元测试?
提供更多背景信息:
只将它转换为UTC字符串没有用,因为在下一步中,日期将被发送到Asp.net服务,因此转换为如下字符串:
'/Date([time])/'
Run Code Online (Sandbox Code Playgroud)
用这个代码
var aspDate = '/Date(' + date.getTime() + ')/';
Run Code Online (Sandbox Code Playgroud) 我正在用C#创建一个计时器.当计时器完成后,用户将收到通知.
如果我的应用程序被暂停,我会安排一个通知,ToastNotificationManager并在toast XML中将声音设置为内部声音,例如:
<audio src='ms-winsoundevent:Notification.Looping.Alarm10' loop='true'/>
Run Code Online (Sandbox Code Playgroud)
但是,如果我的应用程序在前台运行,我不想安排通知,而只是使用BackgroundMediaPlayer播放声音.
当然我想使用与通知中相同的警报声音.但我还没有办法解决那里的内部声音.
我发现了这个:
BackgroundMediaPlayer.Current.SetUriSource(new Uri("ms-appx:///Assets/Sounds/alarm01.wav"));
BackgroundMediaPlayer.Current.Play();
Run Code Online (Sandbox Code Playgroud)
但这需要我将所有系统声音复制到我的应用程序,我不想这样做,因为它会增加大小.
caching ×3
silverlight ×3
windows-10 ×3
asp.net ×2
c# ×2
xaml ×2
.net ×1
cookies ×1
css ×1
css3 ×1
datetime ×1
dotless ×1
http-headers ×1
javascript ×1
logging ×1
security ×1
string ×1
uwp ×1
uwp-xaml ×1
windows-8.1 ×1
wpf ×1