MS Visual Web Developer 2010 Express を使用して、IIS の標準 Windows 7 インストールに単純な ASP.NET プロジェクトを公開しようとして、私は完全に気が狂ってしまいました。インターネットで解決策を探しましたが、うまくいったものは見つかりませんでした。
誰かが助けてくれることを本当に願っています!
公開しようとしていたページを開発しましたが、Visual Studio から実行すると問題なく動作しました。しかし、Visual Studio 内で (ファイル システムへの) パブリッシュ機能を使用すると、Windows 7 IIS Web サイトに、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ファイルから authentication、membership、profile、および roleManager セクションを削除しました。これは、以前にログイン ページを削除したため、これらが必要になるとは予想していなかったからです。したがって、私の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 では機能しないのはなぜですか?! ともかく。別のスタック オーバーフロー ポストパーサー エラー メッセージ: ファイル '/TestSite/Default.aspx.cs' が存在しません。
だから私は変わった...
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ファイルも公開フォルダーに追加する必要があると考えたので、それもコピーしましたが、上記のメッセージが再び表示されました。
誰かがこれに光を当てることができれば、私は永遠に感謝します. 必要に応じて、構成に関する詳細情報を提供させていただきます。
どうもありがとう、
ディーン。