我正在查看一个asp.net应用程序,该应用程序调用应用程序中的数据库在global.asax中启动.这些调用大约需要3秒钟(取决于SQL缓存计划)才能运行.我注意到第一次重新部署时应用程序运行缓慢.我把它放在应用程序启动时对数据库的调用.但是几分钟后,应用程序再次需要时间来加载.
为了弄清楚发生了什么,我写了一个日志文件(见下文).从这个文件中你可以看到,当多个请求第一次到达应用程序时,应用程序启动多次.然后看起来application_start以随机方式触发(任何时间为2-10分钟).
根据我对application_starts如何工作的理解,它应该只在应用程序FIRST启动时被触发,但它似乎是从多个客户端随机触发的!根据MSDN "应用程序启动时第一次触发Application_Start事件."
任何人都可以帮我解决发生的事情吗?我正在使用IIS6和.net 2.0.它是我缺少的应用程序池设置.
非常感谢Rippo
[12/02/2009 16:16:58] 91.84.25.241 - Application started, Sub MyRules started
[12/02/2009 16:17:06] 65.55.51.34 - Application started, Sub MyRules started
[12/02/2009 16:17:07] 91.84.25.241 - Application started, Sub MyRules completed
[12/02/2009 16:17:10] 65.55.51.34 - Application started, Sub MyRules completed
[12/02/2009 16:17:26] 212.115.51.229 - Application started, Sub MyRules started
[12/02/2009 16:17:30] 212.115.51.229 - Application started, Sub MyRules completed
[12/02/2009 16:17:30] 212.115.51.229 - Application started, Sub MyRules started
[12/02/2009 16:17:33] 212.115.51.229 - Application started, Sub MyRules …Run Code Online (Sandbox Code Playgroud) 我正在将一些站点移至运行 IIS6 的新 Windows 2003 安装。但是,我遇到了表单身份验证的问题。有问题的站点在操作系统和 IIS 版本相同的旧机器上运行良好。
当我尝试登录该网站时,我收到一个事件日志“请求的 URL 授权失败”并且页面重定向回:-
http://www.demo.socialclause.net/logout.aspx?ReturnUrl=/Secure/Procurement/Default.aspx
旧服务器和新服务器都包含相同的设置和相同的权限。显然我在某处错过了一个设置,但无法理解它。任何人都可以帮忙吗?
我的 web.config 包含这个:-
<authentication mode="Forms">
<forms slidingExpiration="true" name=".ASPXAUTH" protection="All" loginUrl="~/logout.aspx" timeout="60" ></forms>
</authentication>
Run Code Online (Sandbox Code Playgroud)
在 /secure 目录(这不是虚拟目录)中,我的 web.config 包含:-
<?xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<allow roles="ClauseAdmin"/>
<allow roles="ProcurementAdmin"/>
<allow roles="ReportAdmin"/>
<allow roles="SystemAdmin"/>
<deny users="*"/>
</authorization>
</system.web>
</configuration>
Run Code Online (Sandbox Code Playgroud)
事件日志显示:
Event Type: Information
Event Source: ASP.NET 2.0.50727.0
Event Category: Web Event
Event ID: 1314
Date: 26/05/2009
Time: 21:01:05
User: N/A
Computer: WILDEAA1
Description:
Event code: 4007
Event message: URL authorization …Run Code Online (Sandbox Code Playgroud) 我被要求从http端点提供以下XML文档,如下所示: -
<?xml version="1.0" encoding="utf-8"?>
<XMLFile xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<SalesOrders>
...
</SalesOrders>
Run Code Online (Sandbox Code Playgroud)
但Web API会吐出来
<?xml version="1.0" encoding="utf-8"?>
<XMLFile xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://schemas.datacontract.org/2004/07/White.Label.Ordering.Infrastructure.Data.Queries.Export">
<SalesOrders>
...
</SalesOrders>
Run Code Online (Sandbox Code Playgroud)
我有谷歌并尝试各种修复,但无济于事,我的模型看起来像
[DataContract]
public class XMLFile
{
[DataMember]
public List<SalesOrder> SalesOrders { get; set; }
}
[DataContract]
public class SalesOrder
{
[DataMember(Order = 1)]
public string OrderNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的设置就像这样
public static void Register(HttpConfiguration config)
{
config.Formatters.XmlFormatter.WriterSettings.OmitXmlDeclaration = false;
...
}
Run Code Online (Sandbox Code Playgroud)
如何做我删除xmlns:i,并xmlns与更换xmlns:xsd和xmlns:xsi?
我知道这是一个不好的问题,因为它应该没关系,但我的消费客户正在bar.
我有以下jquery为表中的每个图像添加一个onclick
$("#listtable tr td img").each(
function(intIndex) {
$(this).click(function() {
$(this).load("/Admin/ChangeIdeaStatus/" + $(this).attr('rel'));
});
}
);
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是我想修改它,以便只有表中每行的第一个TD中的图像才能获得onclick事件.
我尝试了以下,但它不起作用
$("#listtable tr td:first img").each(
Run Code Online (Sandbox Code Playgroud) 我只是在检查我的理智。这是我使用 simpleinjector 3.3.2 的代码
Container.RegisterPerWebRequest<HttpContextBase>(() =>
{
var context = HttpContext.Current;
if (context == null && Container.IsVerifying) return new FakeHttpContext();
return new HttpContextWrapper(context);
});
Container.Verify();
Run Code Online (Sandbox Code Playgroud)
...
public class FakeHttpContext : HttpContextBase { }
Run Code Online (Sandbox Code Playgroud)
然而,RegisterPerWebRequest 现在被标记为已过时,我不能 100% 确定这是否是更改代码以反映新代码库的正确方法。
Container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
//So we can inject HttpContextBase into any class
Container.Register<HttpContextBase>( () =>
{
var context = HttpContext.Current;
if (context == null && Container.IsVerifying)
return new FakeHttpContext();
return new HttpContextWrapper(context);
}, Lifestyle.Scoped);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是“我应该使用Lifestyle.Scoped替换RegisterPerWebRequest吗?我仍然可以按原样使用代码吗?
在IIS7中,您现在拥有集成模式和经典模式.是否可以使用web.config强制站点以集成模式运行,并且无法访问IIS7.
我问的原因是我最近注册了Mosso,需要以集成模式运行我的网站,而不是经典.
我知道我可以打电话给他们,也许让他们改变它...
我有一个从MVC页面返回的以下JSON日期,例如
"DateProcessed":"\/Date(1258125238090)\/"
Run Code Online (Sandbox Code Playgroud)
我正在使用JTemplates处理数据,如下所示.
$('#result').setTemplate($("#TemplateResultsTable").html());
$("#result").processTemplate(data);
Run Code Online (Sandbox Code Playgroud)
这是我的结果模板
<script type="text/html" id="TemplateResultsTable">
<h3>{$T[0].StatusName} - Found: {$T.length} </h3>
<table>
<tr>
<th>Name</th>
<th>Description</th>
<th>Date Processed</th>
</tr>
{#foreach $T as match}
<tr>
<td>{$T.match.Title}</td>
<td>{$T.match.Description}</td>
<td>{$T.match.DateProcessed}</td>
</tr>
{#/for}
</table>
</script>
Run Code Online (Sandbox Code Playgroud)
除了我的日期在页面上输出为/ Date(1258125238090)/之外,一切都很棒
如何格式化结果模板中的日期?
嗨,我在asp.net mvc Web应用程序的主页上定义了以下菜单
<%Html.RenderPartial("AdminMenu"); %>
<%Html.RenderPartial("ApproverMenu"); %>
<%Html.RenderPartial("EditorMenu"); %>
Run Code Online (Sandbox Code Playgroud)
但是,我想只显示正确的菜单,具体取决于登录的用户角色.我该如何实现这一目标?
我开始认为我的策略是不正确的,那么是否有更好的方法来实现同样的目标?
我无法使用 Puppeteer 验证页面上是否存在 div,而且我不知道为什么...我想使用以下代码在页面上确定验证码的范围:
puppeteer
.launch(options)
.then(async (browser) => {
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 720 });
console.log("[+] Connecting...");
await page.goto("https://www.google.com/recaptcha/api2/demo");
console.log("[+] Connected");
page.waitForNavigation()
if (await page.$('div.recaptcha-checkbox-border') !== null)
console.log('[+] Resolving captcha');
})
.catch((err) => {
console.log(err);
});
Run Code Online (Sandbox Code Playgroud)
但我的 if 总是假的,我不知道为什么。
以下是手动确定范围的元素的屏幕截图:
我在asp.net 2.0中有一个有234种方法的Web服务.似乎当我添加另一个方法时,该站点不会在VS2005中编译,直到我先删除一个.我收到一条消息,说我刚刚添加的新方法不存在于属于Microsoft.Net/.../Temporary Files目录的文件中.我重新启动了IIS,关闭了VS2005,从这个临时目录中删除了所有文件,但无济于事.获取代码编译的唯一方法是删除另一个代码以保留234个方法....
我可以一致性复制此行为,因此它不能是我的代码.现在我知道这看起来很奇怪,但这是真的!另一个奇怪的事情是,正好有100个方法名称以GetXXXyyyZZZ这个词开头
是否有其他人在Web服务中允许的最大方法数量方面遇到问题?非常感谢
asp.net ×3
c# ×3
asp.net-mvc ×1
date ×1
each ×1
format ×1
global-asax ×1
iis-6 ×1
iis-7 ×1
javascript ×1
jquery ×1
json ×1
jtemplate ×1
master-pages ×1
node.js ×1
puppeteer ×1
web-config ×1
web-services ×1
xml ×1