【发布时间】:2023-03-07 14:26:03
【问题描述】:
试图发布一个简单的 ASP.NET 项目,使用 MS Visual Web Developer 2010 Express 到标准的 Windows 7 IIS 安装,我完全失去了理智。
我在互联网上搜索了解决方案,但没有找到任何有效的方法。
我真的希望有人可以提供帮助!
我开发了一个试图发布的页面,当我从 Visual Studio 运行它时它运行良好。但是,当我使用 Visual Studio 中的发布工具(到文件系统)进入我的 Windows 7 IIS 网站时,我收到一条错误消息,提示我的 Page 指令不正确。
我决定从绝对基础开始,尝试发布默认项目的内容,看看我是如何进行的,但这似乎有同样的问题。这是我经历的步骤。
我创建了一个名为“pea5”的新项目。默认情况下,“ASP.NET Web 应用程序”项目类型是使用母版页和包含一些登录控制页面的 Account 文件夹创建的——这两个我都不想要,所以我删除了 Account 文件夹、masterpage.aspx 和 About.aspx 页面。 这要求我从剩余的 Default.aspx 标记中的 Page 指令中删除 MasterPageFile="~/Site.master" ,并且我还必须从标记中删除封装的 Content 标记-也可以,因为它们仅适用于母版页配置。这在我的 Default.aspx 标记文件中留下了以下内容...
<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="pea5._Default" %>
<h2>
Welcome to ASP.NET!
</h2>
<p>
To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
</p>
<p>
You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&clcid=0x409"
title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
</p>
代码隐藏文件只包含一个空的Page_Load方法,如下...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace pea5
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
}
我还从我的 web.config 文件中删除了身份验证、成员资格、配置文件和角色管理器部分,因为我没想到在之前删除了登录页面后我不再需要这些部分。所以我的 web.config 文件看起来像这样......
<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient" />
</connectionStrings>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
</configuration>
当我运行项目时,Default.aspx 页面加载完美。
然后我将我的项目(选择文件系统选项)发布到我的 IIS 文件夹结构中,当我使用 IE 浏览到 Default.aspx 页面时,出现以下错误。
解析器错误消息:无法加载类型“pea5._Default”。
为什么这在 Visual Studio 中可以很好地工作,但在 IIS 中却不行?! 反正。 我发现另一个 stackoverflow 帖子 Parser Error Message: The file '/TestSite/Default.aspx.cs' does not exist 建议我需要更改标记的 Page 指令中的 CodeBehind 设置。
所以我改变了……
CodeBehind="Default.aspx.cs"
...到...
CodeFile="Default.aspx.cs"
在再次发布并刷新我的页面后,我在 IE 中收到以下错误。
解析器错误消息:文件“/Default.aspx.cs”不存在。
我觉得这条消息很奇怪。肯定已经将我的代码发布到 bin 文件夹中的 DLL 文件中,我将不再需要代码隐藏来加载页面。 果然,当我将代码隐藏文件 Default.aspx.cs 复制到我在 IIS 上的已发布文件夹中时,该页面就可以正常工作了。
谁能解释为什么会这样?
有了这个发现,我就可以重新访问我最初开发的页面,不情愿地接受了我必须上传我的代码隐藏文件才能让我的页面工作的事实。 然而,这带来了一个新问题,因为我原始解决方案的默认页面引用了一个类......
clsLists myords = new clsLists();
myords.LoadList();
...页面在 IE 中返回此错误消息...
编译器错误消息:CS0246:找不到类型或命名空间名称“clsLists”(您是否缺少 using 指令或程序集引用?)
我认为我还必须将我的 clsLists.cs 文件添加到我发布的文件夹中才能成功引用它,所以我也复制了它,但我刚刚收到上面的消息再次。
如果有人能对此有所了解,我将永远感激不尽。 如果需要,我很乐意提供有关我的配置的更多信息。
非常感谢,
院长。
【问题讨论】:
标签: asp.net