- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Visual Studio 2013 中有一个 ASP.NET 项目,在 IIExpress(版本 8.08418.0)中本地运行以进行测试。
主页 (adminDefault.aspx) 将用户重定向到 Login.aspx 以进行身份验证(这是基于作为 url 变量传递给 adminDefault.aspx 的用户 ID 静默完成的)。登录页面在身份验证成功后将其发送回 adminDefault.aspx。 Default 然后将数据加载到 Gridview 中。
整个过程大约需要 15 秒。
当我从 Visual Studio 2013 运行它时,我在大约 4 秒内收到错误“无法显示此页面”。但是,如果我手动点击刷新,工作一段时间后,一切都会好起来的。
在我的代码中,怀疑超时,我隐式设置了足够长的时间来运行所有内容:
if (!this.IsPostBack)
{
Session.Timeout = 120; // seconds before timeout
try
{
// OnUser should have been set from Login.asp. If it is null, send to Login
MembershipUser onUser = Membership.GetUser();
if (onUser == null)
{
Response.Redirect("/login.aspx", true);
}
else
{
String currentUserName = Membership.GetUser().UserName;
userRoles = Roles.GetRolesForUser(Membership.GetUser().UserName);
}
}
即使 Session.Timeout 被忽略,默认值为 20 秒,所以我希望它无论如何都能工作。
所以:1)为什么第一次运行失败?2)有什么办法可以预防吗?如果失败,我可以捕获找不到的页面并自动刷新吗?
编辑:这与 Login.aspx 的往返行程有关。如果我删除 Response.Redirect("/login.aspx", true);
然后这按预期工作。问题是,我需要 Login.aspx 进行验证。任何人都知道为什么登录和返回的旅程不起作用......然后在刷新时呢?
当我尝试在 Chrome 中运行它时,我没有得到那么远。 Chrome 向我展示了这个:
点击这里只是循环片刻然后返回到屏幕。
在这种情况下,IE 上的开发人员工具没有帮助(至少我可以看到)。当我在调试器中运行我的项目时,它会启动一个新的 IE session 。在我打开开发者工具并按下“播放”来记录事件之前, session 已经给我“无法显示页面”错误。当然,我可以在工具中点击“播放”然后刷新,但是当然一切都可以正常运行。刷新使一切正常运行。我需要在那之前发现它失败的原因。
编辑:这是 Login.aspx 和 Web.Security 代码。它不是我写的,但它看起来像样板:
protected void Page_Load(object sender, EventArgs e)
{
string userName = "";
bool authenticated = FormsAuthentication.Authenticate(ref userName);
if (authenticated)
{
FormsAuthentication.RedirectFromLoginPage(userName, false);
}
}
验证码如下所示:
/// <summary>
/// Validates a user based on the session id found in the ReturnURL against credentials stored in the ASP.NET membership.
/// </summary>
/// <param name="userName">The user name.</param>
/// <returns>true if the user name and password are valid; otherwise, false.</returns>
public static bool Authenticate(ref string userName)
{
bool Authenticated = Authenticate(ref userName, GetSessionId());
return Authenticated;
}
/// <summary>
/// Redirects an authenticated user back to the originally requested URL or the default URL using the specified cookie path for the forms-authentication cookie.
/// </summary>
/// <param name="userName">The authenticated user name. </param>
/// <param name="createPersistentCookie">true to create a durable cookie (one that is saved across browser sessions); otherwise, false. </param>
/// <param name="strCookiePath">The cookie path for the forms-authentication ticket. </param>
public static void RedirectFromLoginPage(string userName, bool createPersistentCookie, string strCookiePath)
{
System.Web.Security.FormsAuthentication.SetAuthCookie(userName, false, strCookiePath);
// Redirect back to request page.
HttpContext.Current.Response.Redirect(GetRedirectUrl());
}
最佳答案
我认为在您最初的 if 语句中,您假设每个人都已登录或未登录。但未登录的用户和访问者也可以是匿名的(?)。您要做的是保护此 admin.Default 页面并仅允许授权用户。目前,如果用户 = null 或获得角色,您的 2 个条件是将用户发送回 login.aspx 页面(他们当前所在的页面)。身份验证是关于了解用户是谁,而授权是关于对资源的访问。您只希望授权用户访问该资源。
我会将 admin.Default.aspx、admin.Default.cs 和 admin.Default.designer.cs 放在它们自己的名为 AdminSecure 的文件夹中。然后将它们添加到该文件夹中后,右键单击并添加一个 Web.config 文件。在该 Web.config 中,您需要做的是拒绝匿名用户。因此,当他们尝试访问该 AdminDefault 页面时,他们会自动被重定向。
//拒绝未登录的用户? ==匿名
<xml version="1.0"?>
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
//this can allow particular users
<allow users="User1@mail.com"/>
//deny everyone but one user:
<allow users="User1@mail.com"/>
<deny users="*"/>
注释掉您当前的代码,希望这对您有所帮助。
关于c# - Response.Redirect 失败但随后可以在刷新 IIS Express VS2013 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47461350/
我在Windows 10中使用一些简单的Powershell代码遇到了这个奇怪的问题,我认为这可能是我做错了,但我不是Powershell的天才。 我有这个: $ix = [System.Net.Dn
var urlsearch = "http://192.168.10.113:8080/collective-intellegence/StoreClicks?userid=" + userId +
我有一个非常奇怪的问题,过去两天一直让我抓狂。 我有一个我试图控制的串行设备(LS 100 光度计)。使用设置了正确参数的终端(白蚁),我可以发送命令(“MES”),然后是定界符(CR LF),然后我
我目前正试图让无需注册的 COM 使用 Excel 作为客户端,使用 .NET dll 作为服务器。目前,我只是试图让概念验证工作,但遇到了麻烦。 显然,当我使用 Excel 时,我不能简单地使用与可
我开发了简单的 REST API - https://github.com/pavelpetrcz/MandaysFigu - 我的问题是在本地主机上,WildFly 16 服务器的应用程序运行正常。
我遇到了奇怪的情况 - 从 Django shell 创建一些 Mongoengine 对象是成功的,但是从 Django View 创建相同的对象看起来成功,但 MongoDB 中没有出现任何数据。
我是 flask 的新手,只编写了一个相当简单的网络应用程序——没有数据库,只是一个航类搜索 API 的前端。一切正常,但为了提高我的技能,我正在尝试使用应用程序工厂和蓝图重构我的代码。让它与 pus
我的谷歌分析 JavaScript 事件在开发者控制台中运行得很好。 但是当从外部 js 文件包含在页面上时,它们根本不起作用。由于某种原因。 例如; 下面的内容将在包含在控制台中时运行。但当包含在单
这是一本名为“Node.js 8 the Right Way”的书中的任务。你可以在下面看到它: 这是我的解决方案: 'use strict'; const zmq = require('zeromq
我正在阅读文本行,并创建其独特单词的列表(在将它们小写之后)。我可以使它与 flatMap 一起工作,但不能使它与 map 的“子”流一起工作。 flatMap 看起来更简洁和“更好”,但为什么 di
我正在编写一些 PowerShell 脚本来进行一些构建自动化。我发现 here echo $? 根据前面的语句返回真或假。我刚刚发现 echo 是 Write-Output 的别名。 写主机 $?
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我将一个工作 View Controller 类从另一个项目复制到一个新项目中。我无法在新项目中加载 View 。在旧项目中我使用了presentModalViewController。在新版本中,我
我对 javascript 很陌生,所以很难看出我哪里出错了。由于某种原因,我的功能无法正常工作。任何帮助,将不胜感激。我尝试在外部 js 文件、头部/主体中使用它们,但似乎没有任何效果。错误要么出在
我正在尝试学习Flutter中的复选框。 问题是,当我想在Scaffold(body :)中使用复选框时,它正在工作。但我想在不同的地方使用它,例如ListView中的项目。 return Cente
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我有一个组合框,其中包含一个项目,比如“a”。我想调用该组合框的 Action 监听器,仅在手动选择项目“a”完成时才调用。我也尝试过 ItemStateChanged,但它的工作原理与 Action
你能看一下照片吗?现在,一步前我执行了 this.interrupt()。您可以看到 this.isInterrupted() 为 false。我仔细观察——“这个”没有改变。它具有相同的 ID (1
我们当前使用的是 sleuth 2.2.3.RELEASE,我们看不到在 http header 中传递的 userId 字段没有传播。下面是我们的代码。 BaggageField REQUEST_I
我正在尝试在我的网站上设置一个联系表单,当有人点击发送时,就会运行一个作业,并在该作业中向所有管理员用户发送通知。不过,我在失败的工作表中不断收到此错误: Illuminate\Database\El
我是一名优秀的程序员,十分优秀!