我正在尝试在我的IRouteHandler类的GettHttpHandler方法中启用Session,但session始终为null.有人能告诉我我做错了什么吗?
在global.asax我有
RouteTable.Routes.Add("All", new Route("{*page}", new MyRouteHandler()));
Run Code Online (Sandbox Code Playgroud)
Session为null的MyRouteHandler类如下所示:
public class MyRouteHandler : IRouteHandler, IRequiresSessionState
{
public System.Web.IHttpHandler GetHttpHandler(RequestContext requestContext)
{
string test = HttpContext.Current.Session["test"].ToString();
return BuildManager.CreateInstanceFromVirtualPath("~/Page.aspx", typeof(Page)) as Page;
}
}
Run Code Online (Sandbox Code Playgroud)
我做了一个小测试应用程序来显示问题.
有人能告诉我我做错了什么吗?
编辑添加:
是的,我真的需要路由处理程序中的会话数据.有许多原因,但可以轻松解释的是当用户可以切换到以预览模式浏览网站时.
该站点由数据库中的动态页面层次结构(/ page1/page2 ...)组成,可以正常发布或预览.浏览网站的内容制作者可以选择仅查看普通页面或查看发布到预览的页面.浏览模式存储在用户的会话中,因此路由处理程序需要知道浏览模式才能解析所请求的页面.
所以我真的需要在那个阶段的会议.
我们正在将asp.net站点移动到Azure Web角色和Azure Sql数据库.该站点正在使用输出缓存和普通的Cache [xxx](即HttpRuntime.Cache).现在,它们以经典方式存储在Web角色实例内存中.
悬而未决的成果是首先开始使用分布式缓存进行输出缓存.我可以使用角色内缓存,无论是共存还是与专用缓存角色或Redis缓存.两者都准备好了outputcache提供程序.
两者(具有共址/专用)缓存方法之间是否存在性能差异?
需要考虑的一件事是,从每个服务器上的每个页面加载中获取Redis页面的速度要比每隔120秒在每个服务器上从头开始编写页面更快或更慢,但只是从本地内存获取它?
当我们想要在分布式缓存中开始缓存我们自己的数据(即pocos)而不是HttpRuntime.Cache时,哪个会扩展得更好?
-Mathias
我有一个带有焦点触发器的弹出窗口和弹出窗口中的链接.
HTML:
<div class="tree">
<div class="html-popup">
Popup text <a href="http://www.google.com" target="_top">Link somewhere</a>
</div>
<a tabindex="0" role="button" data-container="body" data-toggle="popover" data-trigger="focus" data-placement="bottom">
Text that has a popover
</a>
</div>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$('.tree [data-toggle="popover" ]').popover({
html: true,
content: function () {
return $(this).prev().html();
}
});
Run Code Online (Sandbox Code Playgroud)
这是一个实时示例:JSFiddle
在Chrome中,链接在弹出窗口关闭之前打开,但在IE和Firefox中它只是关闭弹出窗口.
我必须支持IE9和相当新版本的Firefox.如何在弹出窗口关闭之前打开链接?
谢谢!
默认情况下,我的 Asp.net 核心站点需要身份验证
services.AddMvc(config =>
{
//only allow authenticated users
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
config.Filters.Add(new AuthorizeFilter(policy));
});
Run Code Online (Sandbox Code Playgroud)
但是对于一项操作,我需要允许匿名访问(如果数据库中没有用户,则为 /Account/AddUser)。
我创建了此自定义策略,用于检查用户是否已通过身份验证或用户 db 是否为空。
[Authorize(Policy = "NoUsersInDatabaseOrUserAuthenticated")]
public IActionResult AddUser()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
全球政策与此之间似乎存在 AND,因此它不起作用。如果我添加 [AllowAnonymous],则根本不会评估该政策。
如何将全局策略替换为一项操作的自定义策略?
我们正在使用Application Insight,并添加了几个Web测试来监控我们的网站.网络测试全部每5分钟从三个位置运行,并且所有三个位置都需要在5分钟内失败才能使警报响起.
Application Insights中是否有一些报告可用于向我们的客户报告上个月的可用性?我们需要至少有一个小数的可用性百分比.
更新:基于@ZakiMa的答案,我最终得到以下查询:
let lastmonthstart = startofmonth(now(), -1);
let lastmonthend = endofmonth(lastmonthstart);
availabilityResults
| where timestamp between(lastmonthstart .. lastmonthend)
| summarize failurecount=countif(success == 0), successcount=countif(success == 1) by name, bin(timestamp, 5m)
| project failure = iff(failurecount > 0 and successcount == 0, 1, 0), name, bin(timestamp, 5m)
| summarize totalFailures = sum(failure), totalTests = count(failure) by name
| project ["Name"] = name, ["SLA"] = todouble(totalTests - totalFailures) / todouble(totalTests) * 100
| order by ["SLA"]
Run Code Online (Sandbox Code Playgroud) 我们有一个图片服务器,有很多文件通过http服务文件.它们目前通过具有格式的网址访问
http://pictures.example.com/Pictures/xx/yyyyyy/zzzzzzzzzzzzzzzzzzzzzzzzzzzzz.jpg
我们计划将它们移动到Azure blob存储,并且由于当前图片的URL在几个外部系统中使用,我们希望保持URL相同.
在Azure Blob存储中,blob url的第一部分是容器的名称.我们现有的网址名称Pictures/xxx.但是,容器名称只能包含小写字母.
我是否必须仅为网址重定向创建Azure应用服务,还是有一些解决方法?
我有一个功能应用程序与以下代码
public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)
这每5秒执行一次我的功能.在制作中我希望间隔为30秒.将功能发布到Azure后,它每5秒运行一次.
在功能设置的"集成"页面的顶部,有一条消息"您的应用程序当前处于只读模式,因为您已发布了生成的函数.json.函数运行时将不会对函数.json进行更改"而且页面显示为灰色.
那么如何在开发和生产中为我的计时器功能制定不同的计划?
我在VSTS中建立了gradle版本,正在构建一个Android应用程序,但由于以下错误而失败。构建机器确实需要很少的内存,还是应该更改中的某些设置gradle.properties,例如org.gradle.jvmargs设置?
:app:transformDexArchiveWithExternalLibsDexMergerForDebug
Expiring Daemon because JVM Tenured space is exhausted
Problem in daemon expiration check
org.gradle.internal.event.ListenerNotificationException: Failed to notify daemon expiration listener.
at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:86)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast$ListenerDispatch.dispatch(DefaultListenerManager.java:341)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast.dispatch(DefaultListenerManager.java:152)
at org.gradle.internal.event.DefaultListenerManager$EventBroadcast.dispatch(DefaultListenerManager.java:126)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
at com.sun.proxy.$Proxy3.onExpirationEvent(Unknown Source)
at org.gradle.launcher.daemon.server.Daemon$DaemonExpirationPeriodicCheck.run(Daemon.java:271)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.lang.ClassLoader.findLoadedClass0(Native Method)
at java.lang.ClassLoader.findLoadedClass(ClassLoader.java:1038)
at java.lang.ClassLoader.loadClass(ClassLoader.java:406)
at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at …Run Code Online (Sandbox Code Playgroud) 我们有一个 Http 触发的 Azure 函数,它从 url 和查询字符串获取参数,例如 url 模式“/customers/{customerid}”,然后可以将参数“includeorderdata=true”添加到查询字符串中。因此传入的 url 将为 https://ourazurefunction/api/customers/12345?includeorderdata=true。
在 Application Insights 中,正在记录 url 部分,但我们在任何地方都看不到查询字符串。
我们正在开发一个 Android 应用程序,我通过网站为我们的试点用户提供了一个 apk。用户启用了从未知来源安装设置。该应用程序安装并运行良好。
现在我上传了该应用程序的新版本。我们更改了 apk 包上的版本号,新版本需要手机提供更多权限,例如当第一个版本只需要完全网络访问时防止手机休眠。
当我下载并打开新版本时,它显示“您要安装此现有应用程序的更新吗...然后更新的应用程序将访问:”,然后列出“新”选项卡下添加的权限以及“全部”下的所有权限。
因此,安装程序会识别出这是一个更新,并且在附加权限方面发生了变化。
当我继续安装时,安装停止并显示消息“已安装同名且签名冲突的现有包”。
我必须做什么/更改才能升级现有应用程序?