回发不适用于 aspx 页面作为默认文档

2023-11-26

如果我浏览到http://localhost/edumatic3/trunk/login/accesscode/Default.aspx,我的回发有效。但是,如果我浏览到http://localhost/edumatic3/trunk/login/accesscode/(将 Default.aspx 定义为默认文档),我的回发不起作用。

有办法让这项工作发挥作用吗?或者我应该删除默认文档并强制用户浏览到http://localhost/edumatic3/trunk/login/accesscode/default.aspx?

UPDATE:

代码(部分):

<div id="continueDiv">
        <asp:ImageButton ID="continueImageButton" 
                runat="server" ValidationGroup="continue" 
                OnClick="ContinueImageButton_Click" 
                AlternateText="<%$ Resources:login, continue_alternatetext %>"/>
    </div>

后台代码(部分):

protected void Page_Load(object sender, EventArgs e)
{
    Log.Debug("Page_Load(...)");
    Log.Debug("Page_Load(...) :: PostBack = " + IsPostBack);

    if (!IsPostBack)
    {
        continueImageButton.ImageUrl = "~/App_Themes/" + base.Theme 
        + "/images/" + Resources.login.btn_continue;
    }
}

/// <summary>
/// Continue Image Button Click Handler
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ContinueImageButton_Click(object sender, EventArgs e)
{
 ....

当我点击ImageButton时,Page_Load被触发,IsPostBack为false...正常情况下,它应该为true。根本不会触发ContinueImageButton_Click(...)。

在 HTML 中(部分):

<input type="image" name="ctl00$ContentPlaceHolder1$continueImageButton" 
id="ctl00_ContentPlaceHolder1_continueImageButton" 
src="../../App_Themes/LoginTedu/images/en_continue.png" alt="Continue" 
onclick="javascript:WebForm_DoPostBackWithOptions(new 
WebForm_PostBackOptions(&quot;ctl00$ContentPlaceHolder1$continueImageButton&quot;, 
&quot;&quot;, true, &quot;continue&quot;, &quot;&quot;, false, false))" 
style="border-width:0px;">

HTTP请求:

POST /edumatic3/trunk/login/accesscode/ HTTP/1.1
Host: localhost
Referer: http://localhost/edumatic3/trunk/login/accesscode/
Content-Length: 1351
Cache-Control: max-age=0
Origin: http://localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 
   (KHTML, like Gecko)                 Chrome/13.0.782.215 Safari/535.1
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding: gzip,deflate,sdch
Accept-Language: nl,en-US;q=0.8,en;q=0.6,fr;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
ASP.NET_SessionId=33yal3buv310y2etuj33qghg; CurrenUICulture=en-us

__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPDw...

我想我会尝试重现这个,你是完全正确的。如果没有它就会破裂default.aspx您提供了一个非常简单的例子。看看 HTML,原因就很清楚了。这是因为action属性为空。

快速搜索发现了这一点,ASP.NET 4 重大变化(请参阅在 IIS 7 或 IIS 7.5 集成模式下,默认文档中可能不会引发事件处理程序)。

ASP.NET 4 现在呈现 HTML 表单元素的操作属性值 当向无扩展名 URL 发出请求时作为空字符串 有一个映射到它的默认文档。例如,在早期版本中 ASP.NET 的请求http://contoso.com会产生一个请求 到默认.aspx。在该文档中,开始表单标签将是 呈现如下例所示:

<form action="Default.aspx" />

在 ASP.NET 4 中,请求http://contoso.com也导致 请求 Default.aspx。但是,ASP.NET 现在呈现 HTML 开头 表单标签如下例所示:

<form action="" />

action 属性呈现方式的这种差异可能会导致 IIS 和 ASP.NET 处理表单发布方式的细微变化。 当action属性为空字符串时,IIS DefaultDocumentModule 对象将创建一个子请求 默认.aspx。在大多数情况下,这个子请求是透明的 到应用程序代码,Default.aspx 页面正常运行。

但是,托管代码与 IIS 7 或 IIS 之间的潜在交互 7.5 集成模式可能导致托管 .aspx 页面停止工作 在孩子请求期间正确地进行。

我已经创建了这两个修复程序来解决该问题,请使用其中之一。

1)将此代码添加到Global.asax

void Application_BeginRequest(object sender, EventArgs e)
{
    var app = (HttpApplication)sender;
    if (app.Context.Request.Url.LocalPath.EndsWith("/"))
    {
    app.Context.RewritePath(
             string.Concat(app.Context.Request.Url.LocalPath, "default.aspx"));
    }
}

2)创建表单ControlAdapter

public class FormControlAdapter : ControlAdapter
{
    protected override void Render(System.Web.UI.HtmlTextWriter writer)
    {
        base.Render(new RewriteFormHtmlTextWriter(writer));
    }

    public class RewriteFormHtmlTextWriter : HtmlTextWriter
    {
        public RewriteFormHtmlTextWriter(HtmlTextWriter writer)
            : base(writer)
        {
            this.InnerWriter = writer.InnerWriter;
        }

        public override void WriteAttribute(string name, string value,
                                            bool fEncode)
        {
            if (name.Equals("action") && string.IsNullOrEmpty(value))
            {
                value = "default.aspx";
            }
            base.WriteAttribute(name, value, fEncode);
        }
    }
}

通过在 App_Browsers\Default.browsers 中创建此文件来注册它

<browsers>
    <browser refID="Default">
       <controlAdapters>
          <adapter controlType="System.Web.UI.HtmlControls.HtmlForm"
                            adapterType="TheCodeKing.Web.FormControlAdapter" />
       </controlAdapters>
    </browser>
</browsers>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

回发不适用于 aspx 页面作为默认文档 的相关文章

  • 如何获取 ASP.NET MVC 中当前的虚拟路径?

    如何从 ASP NET MVC 视图中获取当前路径 URL 如果没有办法将其获取到视图中 那么如何将其获取到控制器中以便将其传递到视图呢 EDIT 我不需要 url 的协议和主机部分 这将为您返回视图中的 url
  • 如何向WebRequest添加参数?

    我需要从 Web 服务调用一个方法 所以我编写了以下代码 private string urlPath http xxx xxx xxx manager string request urlPath index php org get or
  • ADO.NET 池连接无法重用

    我正在开发一个 ASP NET MVC 应用程序 该应用程序使用 EF 6 x 来处理我的 Azure SDL 数据库 最近 随着负载的增加 应用程序开始进入无法再与 SQL 服务器通信的状态 我可以看到有 100 个到我的数据库的活动连接
  • 无需登录即可在 Intranet 上获取 Web 应用程序的域\用户名

    我的 Intranet 上有一个 Web 应用程序 VS 2005 有几个页面不需要用户登录应用程序 反馈和默认页面 我正在尝试获取要显示和 或发送反馈的域名和用户名 有没有一种方法可以在不需要用户登录的情况下执行此操作 我试过了this
  • JetBrains Rider 针对 4.5 框架,无法切换到 4.7

    基本上 当尝试添加不支持旧框架的 NuGet 包时 会出现错误 但是在项目配置中只有 4 5 可用 在项目创建过程中 不存在选择目标的选项 有什么方法可以正确配置它吗 I haven t found out how to set up NE
  • 如何使 WinForms UserControl 填充其容器的大小

    我正在尝试创建一个多布局主屏幕应用程序 我在顶部有一些按钮链接到应用程序的主要部分 例如模型中每个实体的管理窗口 单击这些按钮中的任何一个都会在面板中显示关联的用户控件 面板包含用户控件 而用户控件又包含用户界面 WinForms User
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use
  • 如何使用 .net 2.0 中的 WebBrowser 控件检查 ajax 更新?

    我有一个网页正在使用 WebBrowser 控件在 winform 应用程序中显示 我需要在网页中的 HTML 发生变化时执行一个事件 但是 我找不到通过 Ajax 更新页面时触发的事件 DocumentComplete FileDownl
  • 实现“LazyProperty”类 - 这是一个好主意吗?

    我经常发现自己编写的属性是惰性评估的 就像是 if backingField null backingField SomeOperation return backingField 代码不多 但如果您有很多属性 它确实会重复很多次 我正在考
  • nHibernate 使用 Log4Net 进行日志记录,线程会话问题

    大家好 这里有一个小问题 我正在努力解决这个问题 我目前正在开始使用 nHibernate 由于工作需要 我不得不这样做 并且我在 nHibernate 的会话和多线程方面遇到了一些困难 我想在这里完成的任务是让 Log4Net 将所有内容
  • IIS 和 ISAPI-WSGI = 非常慢

    我已经使用 IIS 在 IIS 上加载了 2 个 Django 应用程序isapi wsgi http code google com p isapi wsgi 这些都是服务器设置 Windows Server 2003 IIS6 和 SQ
  • 与常规 SQL 查询不同,为什么“linq to sql”查询以 FROM 关键字开头?

    为什么 linq to sql 查询以FROM与常规 SQL 查询不同的关键字 LINQ 模仿Logical Query processing在 SQL 中你有 8 SELECT 9 DISTINCT 11 TOP 1 FROM 2 ON
  • 实体框架中的 DbSet [重复]

    这个问题在这里已经有答案了 我在实体框架中有以下代码 using var dbc new TestDbContext var data from a in dbc tableList select new a id ToList 当我调试代
  • 多线程 Web 应用程序

    我知道有很多情况都是在应用程序中使用多线程的好例子 但是什么时候最好在 net Web 应用程序中使用多线程 Web 应用程序几乎肯定已经由托管环境 IIS 等 实现多线程化 如果您的页面受 CPU 限制 并且想要使用多个核心 那么可以说多
  • 通过 JavaScript 单击按钮/页面提交

    我想了解 asp net 框架如何知道何时单击了按钮 因此一旦收到请求 就会在服务器上触发其单击事件 我需要了解它是如何工作的 因为我想从 JavaScript 触发按钮的服务器单击事件 我能够从 JavaScript 执行页面提交 doc
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • Visual Studio '17 未在参考管理器中显示程序集

    我遇到的问题是 我似乎无法弄清楚如何添加对某些解决方案的引用 在我从 Visual Studio 17 开始的大多数解决方案中 我在解决方案资源管理器中看到 引用 但例如对于 asp net core web api 我得到 依赖项 每当解
  • 如何隐藏数据列表中的项目

    我想隐藏一个项目datalist根据某种条件起诉ItemBound how Wrap a PlaceHolder控制整个内容ItemTemplate 然后在 ItemDataBound 事件中 您可以执行以下操作 Protected Sub
  • 如何让 webpack 和 iis express 协同工作?

    I have Angular 2 和 Webpack 2 入门 https github com qdouble angular webpack2 starter它通过 webpack dev server 在节点上运行 我如何使用 web

随机推荐

  • SQLITE:如果共享列,则将行合并为单行

    从上一篇文章中 我在 sqlite3 中有以下视图 CREATE View AttendeeTableView AS SELECT LastName FirstName as AttendeeName CompanyName PhotoUR
  • 编译器对虚函数调用的优化

    说明为什么虚拟分派在运行时发生的最流行的例子是当无法在编译时确定将创建哪个派生类时 例如 Base b rand 2 1 new Derived1 new Derived2 或者当它取决于用户输入时 假设情况并非如此 并且可以在编译时完全确
  • 如何使用实体框架查询外键对象?

    我正在尝试了解 Entity Framework 6 但遇到了一个问题 我已经能够在测试项目中重现该问题 A Movie has a Nameand a Revenue A Revenue has a GrossIncome public
  • “clear”是Javascript中的保留字吗?

    我只是花了很长时间才弄清楚我不应该使用clear 作为Javascript中函数的名称 Hello br
  • Winform另存为

    有谁知道任何文章或网站显示如何在 win 表单中创建 另存为 对话框 我有一个按钮 用户单击并序列化一些数据 然后用户使用此 另存为 框指定他们希望将其保存的位置 你的意思是像SaveFileDialog 来自MSDN示例 稍作修改 usi
  • C++ - 从文件读取到双精度[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我对编程还比较陌生 目前正在学习 C 课程 到目前为止我还没有遇到任何重大问题 我正在制作一个程序 其中 X 数量的评委可以打出 0 0 10 0 双倍 的分数 然后删除最高和最低的
  • 用 NSURLSession 替换 NSURLConnection

    我已经开始设计NetworkCommunication 我有一个设计NSOperation子类创建并管理自己的NSURLConnection The NSOperation子类由一个实例化NetworkManger类将其添加到NSOpera
  • 在 shell 脚本中读取 python 变量?

    我的 python 文件有这两个变量 week date 01 03 16 01 09 16 cust id 12345 我如何将其读入接受这两个变量的 shell 脚本中 我当前的 shell 脚本需要手动编辑 dt 和 id 我想将 p
  • 如何使用express-graphql抛出多个错误?

    在express graphql应用程序中 我有一个userLogin像这样的解析器 const userLogin async id password context info gt if id throw new Error No id
  • MongoDB:$elemMatch和$and在数组内查找对象有什么区别?

    查询运算符的使用有逻辑上的区别吗 and db collection find and array field1 someValue array field2 3 以及投影算子的用法 elemMatch db collection find
  • 在 JavaScript 中生成特定范围内的随机整数

    如何在 JavaScript 中生成两个指定变量之间的随机整数 例如x 4 and y 8将输出任何4 5 6 7 8 上面有一些例子Mozilla 开发者网络 page Returns a random number between mi
  • 如何在编译时填充NSArray?

    在 Objective C 中 如何做类似的事情是 int array 1 2 3 4 纯C语言 我需要用 NSString 填充 NSArray 并尽可能减少开销 代码和 或运行时 不可能像在编译时那样创建数组 那是因为它不是 编译时间常
  • chrome PDF 查看器无法下载文件

    这是我的情况 我有一个运行 PDF 生成器的服务器 当我使用一些参数发出请求时 它会返回一个 PDF 文件 该 PDF 不会存储在运行时生成的服务器中 Everything goes fine I can get the PDF open
  • 尽管我已经安装了该模块,为什么我在 VS Code 中收到“ModuleNotFoundError”?

    我正在尝试使用 VS Code 调试一些 python 代码 我收到以下关于我确定已安装的模块的错误 Exception has occurred ModuleNotFoundError No module named SimpleITK
  • 以编程方式将 TypeScript 字符串编译为 Javascript 字符串

    有没有办法编译一个String在其 JavaScript 中包含 TypeScriptString相等的 例如 在 Coffeescript 以及 LiveScript coco 等 中 它是一个 简化的 单行代码 jsCompiledCo
  • 如何在Makefile中运行子Shell脚本?

    我想执行 Shell 命令 但我不知道如何在 Makefile 中正确执行子 bash 命令 import bd while nc z make ips awk mysql print 2 3306 do sleep 1 done 感谢您的
  • 如何计算两个地理/GPS 坐标之间的角度?

    我有两个 GPS 坐标 例如 纬度 1 经度 1 和 纬度 2 经度 2 谁能帮我找到这两点之间的角度 值应为 0 360 度 取自this以前的帖子 float dy lat2 lat1 float dx cosf M PI 180 la
  • 具有“空类”的 C++ 多重继承内存布局

    我知道多重继承的内存布局没有定义 所以我不应该依赖它 但是 在特殊情况下我可以依赖它吗 也就是说 一个类只有一个 真正的 超类 所有其他都是 空类 即既没有字段也没有虚拟方法的类 即它们只有非虚拟方法 在这种情况下 这些附加类不应向该类的内
  • Codeigniter 文件上传不起作用

    我编写了上传图像文件的代码 但总是显示You did not select a file to upload 这是我的代码 view div class control group div
  • 回发不适用于 aspx 页面作为默认文档

    如果我浏览到http localhost edumatic3 trunk login accesscode Default aspx 我的回发有效 但是 如果我浏览到http localhost edumatic3 trunk login