fin*_*nnw 12 c# asp.net iis asp.net-3.5
我刚刚在IIS中创建了一个ASP.NET C#项目和一个虚拟目录(据我所知),但是我看到了一些我以前从未见过的非常奇怪的行为.
看来没有我的C#方法不断被调用.我知道这是因为我已经覆盖了一堆方法,除了抛出异常之外什么都不做.至少Default.aspx可在浏览器中查看(见下文)
以下是我的Default.aspx.cs文件的确切内容:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Drawings2
{
public partial class _Default : System.Web.UI.Page
{
static _Default()
{
throw new Exception("XXX");
}
public _Default()
{
throw new Exception("XXX");
}
override protected void OnInit(EventArgs e)
{
/*
* base.OnInit(e);
* InitializeComponent();
*/
throw new Exception("XXX");
}
private void InitializeComponent()
{
/*
* Load += new EventHandler(this.Page_Load);
*/
throw new Exception("XXX");
}
protected void Page_Load(object sender, EventArgs e)
{
throw new Exception("XXX");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我假设这个代码根本没有被加载,因为如果是,那么每当我试图在浏览器中查看页面时我都会看到异常.相反,.aspx文件中的内容正常显示(除了我的事件处理程序未被调用.)
当我尝试添加新的.aspx页面时,情况会变得更糟.当我尝试在浏览器中查看新页面时出现此错误(这是使用VS2008模板中未修改的.cs文件):Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.
Parser Error Message: Could not load type 'Drawings2.WebForm1'.
Run Code Online (Sandbox Code Playgroud)
是什么导致ASP.NET站点进入这种奇怪的状态?
注意:<%...%>.aspx文件中的转义仍然可以正常工作.此外,当我在.aspx文件中添加表单字段时,我可以在.cs文件中自动完成其名称.我曾经尝试都true和false为AutoEventWireup两个页面上.我也尝试在所有类声明中添加和删除"部分".
更新 - 这是我的@Page标签.正如我所说,我试过切换AutoEventWireup.引用的.cs文件存在并编译,没有错误.
<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="Default.aspx.cs" Inherits="Drawings2._Default" %>
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Drawings2.WebForm1" %>
Run Code Online (Sandbox Code Playgroud)
有关:
use*_*uld 13
尝试改变:
<%@ Page Language="C#" AutoEventWireup="false" CodeBehind="Default.aspx.cs" Inherits="Drawings2._Default" %>
Run Code Online (Sandbox Code Playgroud)
至:
<%@ Page Language="C#" AutoEventWireup="false" CodeFile="Default.aspx.cs" Inherits="Drawings2._Default" %>
Run Code Online (Sandbox Code Playgroud)
该CodeBehind是为Visual Studio.我相信CodeFile用于JIT.
另一种方法是编译项目并在bin目录中更新程序集.
http://msdn.microsoft.com/en-us/library/ydy4x04a.aspx
CodeBehind指定包含与页面关联的类的已编译文件的名称.运行时不使用此属性.
此属性用于Web应用程序项目.CodeFile属性用于网站项目.有关Visual Studio中Web项目类型的详细信息,请参阅Web应用程序项目与Web站点项目.
CodeFile指定页面引用的代码隐藏文件的路径.此属性与Inherits属性一起使用,以将代码隐藏源文件与Web页面相关联.该属性仅对编译的页面有效.
此属性用于网站项目.
CodeBehind属性用于Web应用程序项目.有关Visual Studio中Web项目类型的详细信息,请参阅Web应用程序项目与Web站点项目.
这里有很多相互矛盾的信息。例如,如果您真正创建的是ASP.NET Web 应用程序(而不是网站),那么您不应该使用CodeFile,正如used2could 所建议的那样。
您是否尝试过检查代码隐藏文件的构建操作?确保将其设置为“编译”。
我认为我们需要从头开始,以确定问题是否来自您的 Web 项目、您的 IIS 配置或两者。
我将对您的设置做出以下假设,因为这是我当前的设置。如果其中有任何错误,请告诉我,但这不会产生很大的影响:
让我们尽量保持简单,以尽量减少出现奇怪情况的可能性:
Default.aspx的内容:
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteLayout.Master"
AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="TestWebApp1.Default" %>
<asp:Content ID="Content2" ContentPlaceHolderID="mainCPH" runat="server">
<p><asp:Label ID="lblTest" runat="server">This is a test</asp:Label></p>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
Default.aspx.cs的内容:
using System;
namespace TestWebApp1
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
lblTest.Text = "Modified from Default.aspx's Page_Load method.";
}
}
}
Run Code Online (Sandbox Code Playgroud)
SiteLayout.Master的内容:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="SiteLayout.master.cs"
Inherits="TestWebApp1.SiteLayout" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<body>
<form id="form1" runat="server">
<div>
<p><asp:Label ID="lblTest" runat="server">This is a test</asp:Label></p>
<asp:ContentPlaceHolder ID="mainCPH" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
SiteLayout.Master.cs的内容:
using System;
namespace TestWebApp1
{
public partial class SiteLayout : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
lblTest.Text = "Modified from master page's Page_Load method.";
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在本地计算机上进行调试时,该站点应该可以正常运行:


完成上述步骤后,您是否仍然遇到问题?
| 归档时间: |
|
| 查看次数: |
18930 次 |
| 最近记录: |