我正在完全忘记尝试发布一个简单的ASP.NET项目,使用MS Visual Web Developer 2010 Express到IIS的标准Windows 7安装。 我已经在互联网上寻找解决方案,但我找不到任何有效的方法 我真的希望有人可以帮忙!
我开发了一个我试图发布的页面,当我从Visual Studio运行它时它工作正常。但是当我在Visual Studio中使用发布工具(到文件系统)到我的Windows 7 IIS网站时,我收到一条错误消息,提示我的Page指令不正确。
我决定从绝对基础开始,尝试发布默认项目的内容,看看我是如何继续使用的,但这看起来有同样的问题。以下是我经历的步骤。
我创建了一个名为'pea5'的新项目。默认情况下,“ASP.NET Web应用程序”项目类型是使用母版页创建的,而帐户文件夹包含一些登录控制页面 - 这两者都不是我想要的,所以我删除了帐户文件夹, masterpage.aspx 和About.aspx页面。 这要求我从剩余的 Default.aspx 标记中的Page指令中删除MasterPageFile =“〜/ Site.master”,我还必须从标记中删除封装的内容标记 - 也是因为它们只能在母版页配置中工作。这使我在 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 文件添加到我发布的文件夹中,以便成功引用它,所以我也复制了它,但我刚收到上面的消息试。
如果有人能对此有所了解,我将永远感激不尽。 如果需要,我很乐意提供有关我的配置的更多信息。
非常感谢,
迪安。
答案 0 :(得分:0)
首先回到原始解决方案(代码隐藏),确保您的.dll位于bin目录(root)中,可能会被排除。您也可以尝试将您的网站转换为应用程序(在inetmgr中 - >右键单击您的网站 - >转换为应用程序)。