无法加载已发布的ASP.NET项目

时间:2013-05-11 12:02:21

标签: asp.net

我正在完全忘记尝试发布一个简单的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&amp;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 文件添加到我发布的文件夹中,以便成功引用它,所以我也复制了它,但我刚收到上面的消息试。

如果有人能对此有所了解,我将永远感激不尽。 如果需要,我很乐意提供有关我的配置的更多信息。

非常感谢,

迪安。

1 个答案:

答案 0 :(得分:0)

首先回到原始解决方案(代码隐藏),确保您的.dll位于bin目录(root)中,可能会被排除。您也可以尝试将您的网站转换为应用程序(在inetmgr中 - >右键单击您的网站 - >转换为应用程序)。