我在使用母版页的asp.net webform时遇到问题.仅当页面名为default.aspx时才会出现此问题.当命名为default.aspx时,如果Page_Load事件中有任何代码,则不会触发其他事件.这还包括我已经测试过的所有代码,我已经测试了OnInit和Button点击事件,这个问题首先表现为按钮点击没有触发.
Default.aspx代码
<%@ Page Title="" Language="C#" MasterPageFile="~/TWS/tws.Master" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="SITMComAU.TWS.original" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="bodyPlaceholder" runat="server">
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
OnInit Fires: - 通过断点检查
public partial class original : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
int a = 1;
int b = 2;
int c = a;
}
}
Run Code Online (Sandbox Code Playgroud)
OnInit不会触发: - 通过断点检查
public partial class original : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
/* …Run Code Online (Sandbox Code Playgroud) 以下代码
XmlDocument xdoc = new XmlDocument();
String xml = @"<!DOCTYPE lolz [" +
"<!ENTITY lol \"lol\">" +
"<!ENTITY lol2 \"&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;\">" +
"<!ENTITY lol3 \"&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;\">" +
"<!ENTITY lol4 \"&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;\">" +
"<!ENTITY lol5 \"&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;\">" +
"<!ENTITY lol6 \"&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;\">" +
"<!ENTITY lol7 \"&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;\">" +
"<!ENTITY lol8 \"&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;\">" +
"<!ENTITY lol9 \"&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;\">" +
"]>" +
"<lolz>&lol9;</lolz>";
xdoc.LoadXml(xml);
Run Code Online (Sandbox Code Playgroud)
.Net 4.0 此代码将抛出异常 输入文档已超出MaxCharactersFromEntities设置的限制
.Net 2.0/3.5 此代码不会抛出任何异常,并且会在XML中继续增长,直到达到内存限制
有人可以解释这种差异的原因吗?
到目前为止所做的研究
我反汇编了System.Xml v2.0和v4.0并且只改变了我看到的方法RegisterConsumedCharacters
v2.0定义
private void RegisterConsumedCharacters(long characters, bool inEntityReference)
{
if (this.maxCharactersInDocument …Run Code Online (Sandbox Code Playgroud) 为什么VB.Net会转换此代码
Sub Main()
Dim str As String = ""
Dim lNumber As Integer = 0
str = "String " + lNumber
Console.WriteLine(str)
End Sub
Run Code Online (Sandbox Code Playgroud)
至
public static void Main()
{
int lNumber = 0;
Console.WriteLine(Conversions.ToString((double) (Conversions.ToDouble("String ") + lNumber)));
}
Run Code Online (Sandbox Code Playgroud)
而不仅仅是
public static void Main()
{
int lNumber = 0;
Console.WriteLine("String " + lNumber);
}
Run Code Online (Sandbox Code Playgroud)
我在C#中问这个问题
当一个或两个操作数都是string类型时,+连接操作数的字符串表示