いつもお世話になっております。
asp.netの動作環境検証テストをしているのですが、クラスの動作で躓いております。
--------------------------------------------------
≪テスト内容≫
visual web developer 2008にて作成したサイトのファイルをサーバ上へコピーしてテストしています。
App_Codeフォルダ内へclass1.vbファイル作成
フォームの'Dim test As New Class1'を記述
IISの仮想ディレクトリへサイトファイルを丸ごとコピー
ブラウザで実行
--------------------------------------------------
≪サーバ環境:≫
OS:windows server 2008
1. 以下をインストール
asp.net
.NET framework 2.0
2. IISマネージャのwebサービス拡張の画面で
Active server pages
ASP.NET 1.14…
ASP.NET 2.0…
を許可する
3. サイトのプロパティにてバージョンをASP.net2.0へ変更
--------------------------------------------------
≪詳細≫
ローカル(開発環境)環境ではvisual web developerでのデバッグはエラーが出ないのですが、サーバへコピーすると以下のエラーが出てしまいます。
また、開発環境側では、他の開発環境(vb6等)が入っているため、'msgbox'が動作するなどサーバ環境へファイル移行した時と動作が違っている部分はあります。
●ブラウザに表示されるエラー内容
説明: この要求を送信するために必要なリソースをコンパイル中に、エラーが発生しました。以下のエラーの詳細を確認して、ソース コードを修正してください。
コンパイル エラー メッセージ: BC30002: 型 'Class1' が定義されていません。
ソース エラー:
行 22: Dim test As New Class1
--------------------------------------------------
今いち基本的なことを理解していないため、サイトの側の記述に問題があるのか、サーバ環境に問題があるのかの判断もつかない状況です。
見当違いな質問をしている可能性があるのですが、ご存知の方いらっしゃいましたらご教授頂けますようよろしくお願いいたします。
No.1
- 回答日時:
・単純に、Class1を定義しているソースファイルをリリースし忘れている
・そもそもClass1という型をApp_Codeの配下に定義していない?
・Class1へのパスが通っていない
(Dim test As New [Projectで設定している名前空間名].Class1
にするか、もしくは、Class1を参照するためのImportsが定義されていない)
・IISのASP.NETの稼動バージョン設定がASP.NET 2.0になっていない
上記のいずれかしかありませんので、見直してみてください。
No.2
- 回答日時:
1つ忘れてました。
Class1は外部DLLなのか、それともApp_Codeに定義しているクラスですか?
また、aspxファイルやascxファイルから、Class1を外部DLLを参照させているのであれば、DLLを参照設定した上で、Namespaceプロパティを設定しないとたぶん動かないかもしれません。
<%@ Register TagPrefix="test" Namespace="Class1が定義されているフル名前空間(Ex:SampleProjet.Test1)" Assembly="Class1のDLL名" %>
いずれにしても、問題のソースコードがどうなっているのか公開して頂かないと、回答もまばらになってしまいます。
正確な回答を欲しいのであれば、ソースコードを補足情報としてUPしてください。
宜しくお願いします。
早速のご回答ありがとうございます。
動作のテストをしているだけのため、ソースというのもおこがましいのですが、詳細を記載させていただきます。
≪作業内容≫
1.visual web developer 2008にて新規サイトを作成
2.default.aspxファイルの追加、App_Codeというフォルダを作成し、その中にclass1.vbファイルを追加
3.default.aspxにボタンを追加+ボタンのクリックイベント内に
'dim test as New class1'
という記述を追加
---------------------------------------------------
●default.aspx
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitio …
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" Text="Button" />
</div>
</form>
</body>
</html>
●default.vb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim test As New Class1
End Sub
End Class
●class1.vb
Imports Microsoft.VisualBasic
Public Class Class1
End Class
------------------------
以上です。
> そもそもClass1という型をApp_Codeの配下に定義していない?
これは単純に追加するという意味ではないのでしょうか?
> Class1へのパスが通っていない
(Dim test As New [Projectで設定している名前空間名].Class1
にするか、もしくは、Class1を参照するためのImportsが定義されていない)
なるほど。この辺を全く理解していないようです。
>Class1は外部DLLなのか、それともApp_Codeに定義しているクラスですか?
App_Codeに定義しているクラスになると思うのですが、この辺りに関しても回答できるほどの知識がない状態です。
申し訳ございません。
ちょっと調べてみます。
No.3ベストアンサー
- 回答日時:
ソースコードの公開ありがとうございました。
ソースを見てわかったこの現象の解決策ですが
以下の3つのうちどちらかを対応すれば解決すると思います。
(ほぼ断言します)
・IISのASP.NETの稼動バージョン設定がASP.NET 2.0になっていない
稼動サーバーのIIS(Internet Information Server)の
設定で問題のWebアプリケーションを動かすために、
仮想ディレクトリを作っているかと思いますが、その仮想ディレクトリ
の[プロパティ]で[ASP.NET]というタブがあるので、
「ASP.NET バージョン」を「2.050727」に変更してください。
(恐らく、「1.1.4322」になっているような気がします)
・上記でダメだった場合、
問題サーバーの[スタート]→「ファイル名を指定して実行」を起動し、
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
を実行してみてください。
(恐らくASP.NETの構成がおかしくなっているので、
上記をやることで、ASP.NETの構成を正しくリセットすることができます)
・もし上記2つでもダメだった場合、
App_Codeに書いた、Class1.vb のソースファイルにNewメソッドを
追加してください。
Imports Microsoft.VisualBasic
Public Class Class1
Public Sub New()
End Sub
End Class
以上、宜しくお願いします。
度々ご回答ありがとうございます。
早速試させていただきました。
・IISのASP.NETの稼動バージョン設定がASP.NET 2.0になっていない
→問題ありませんでした。
・C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regiis.exe -i
→実行しました。インストールされましたが、実行したところ駄目でした。
・App_Codeに書いた、Class1.vb のソースファイルにNewメソッドを追加してください
→追加しましたが、実行したところ駄目でした。
解決できませんでしたが、本当にありがとうございました。
ちょっと何か根本的な部分が間違っているのかもしれません。
No.4
- 回答日時:
ダメでした。
これ以上はもういいです。ありがとうございました。で結論づけちゃうのもちょっと・・・
後で同じ問題に悩んだ人がこのスレッドを見た時に
曖昧になってしまいますので、ダメだったら、ダメだったなりに
模索すべきです。
さて、気になったのは、Binディレクトリのファイルも
サーバーにすべてUPしてますよね?
きっと他のサーバーには存在し、問題のサーバーだけに
存在しないファイルやDLLがあるような気がします。
(ここでいうDLLはBinディレクトリという意味ではなく、
GAC(グローバルアセンブリキャッシュ)に登録されていない
DLLがあるかもしれないという意味です)
また、問題のサーバーや、仮想ディレクトリやApp_Codeディレクトリ
に対し、ASPNETユーザに権限は付与されていますか?
なければ権限付与してみてください。
また、IISの「ASP.NET バージョン」ですが、仮想ディレクトリだけではなく、仮想ディレクトリより上位にあるフォルダや仮想ディレクトリ、Webサーバーに対しても同様に「ASP.NET バージョン」を「2.050727」に設定しましたか?
いずれにしても今まで教示した中で絶対に解決できるはずです。
私自身、過去に何度もこの事象にはまってきて実際に
体験してますので、教示した内容は絶対に間違いないです。
後は、ちょっとしたやり方や対象箇所が間違ってたとか
そんな類だと思いますので、ご確認ください。
一応、今まで教示した中で設定は設定し終えた後、IISの再起動とかされていますよね?一応、何かを設定したら念のためIIS Adminサービスの再起動はした上で確認してください。
本当に度々申し訳ございません。また、ありがとうございます。
月曜までサーバ環境が触れないため、お礼と補足のみになりますがご容赦ください。
> BinディレクトリのファイルもサーバーにすべてUPしてますよね?
サーバ側へ配置しているのは
webconfig
default.aspx
default.vb
□App_Code
class1.vb
のみとなります。他に必要なものがあるということでしょうか?
> 問題のサーバーや、仮想ディレクトリやApp_Codeディレクトリ
に対し、ASPNETユーザに権限は付与されていますか?
これはIISマネージャにて設定するものでしょうか?
明示的に作業をして権限を与えた、というようなことはしておりません。
> IISの「ASP.NET バージョン」ですが、仮想ディレクトリだけではなく、仮想ディレクトリより上位にあるフォルダや仮想ディレクトリ、
これは問題の仮想ディレクトリに設定してあるフォルダの上位フォルダを仮想ディレクトリに設定してある場合は、ということでよろしいでしょうか?
それとも仮想ディレクトリ内に仮想ディレクトリが設定できるのでしょうか?
いずれにしても問題ないと思います。
> Webサーバーに対しても同様に「ASP.NET バージョン」を「2.050727」に設定しましたか?
既定のwebサイトに仮想ディレクトリを設定している場合は、「既定のwebサイト」を選択→プロパティ、ということで問題ないでしょうか?
昨日確認した時にはなっていたと思いますが、再度確認いたします。
> 後は、ちょっとしたやり方や対象箇所が間違ってたとか
そんな類だと思いますので、ご確認ください。
そうですね。再度一通り確認しながら作業してみます。
>今まで教示した中で設定は設定し終えた後、IISの再起動とかされていますよね?
IISの再起動はしています。
以上よろしくお願いいたします。
No.5
- 回答日時:
>webconfig
>default.aspx
>default.vb
>□App_Code
>class1.vb
BinディレクトリもUPしてください。
Binディレクトリがないのであれば、サーバー側で空のBinディレクトリを作ってください。Binディレクトリがないためにエラーになることは多々あります。
>これはIISマネージャにて設定するものでしょうか?
>明示的に作業をして権限を与えた、というようなことはしておりません。
IISマネージャーではなく、ファイル操作するエクスプローラー(Windowsキー + Eキーで起動)でASPNETユーザに権限を与えて下さい。ないとエラーになります。
>これは問題の仮想ディレクトリに設定してあるフォルダの上位フォルダを仮想ディレクトリに設定してある場合は、ということでよろしいでしょうか?
既定のWebサイトも問題の仮想ディレクトリも両方必要です。
また、仮想ディレクトリ内にまた子の仮想ディレクトリを作成した場合も子に対しても設定が必要です。
そんなところでしょうか。IISは再起動をしているということですが、何か設定した度に再起動して確認してみてください。
この回答への補足
度々ご回答ありがとうございます。
ご教授いただいた作業を一通り行ったのですが駄目でした…。
ただ、サーバ側の問題だというのは大体分かりましたので再度初期設定自体を見直して見ます。
あと、もし可能でしたらあと数点質問させてください。
> IISマネージャーではなく、ファイル操作するエクスプローラー(Windowsキー + Eキーで起動)でASPNETユーザに権限を与えて下さい。ないとエラーになります。
windows上で言いますと、everyoneにフルアクセス権限を与えている状態で問題ないでしょうか?ASPNETユーザというものを作る必要があるのでしょうか?
関係ないかと思い省いていたのですが、visual web developer 2008でデバッグ時に自動でできるwebconfigをそのままコピーすると以下のエラーが発生するためその部分をコメントアウトしているのですが、問題ないでしょうか?
-----------------------------------
構成にエラーがあります。
説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。
パーサー エラー メッセージ: アプリケーション レベルを超えて allowDefinition='MachineToApplication' として登録されているセクションを使うことはできません。このエラーは、仮想ディレクトリが IIS でアプリケーションとして構成されなかった場合に発生します。
ソース エラー:
行 47: <authentication mode="Windows"/>
-----------------------------------
以上よろしくお願いいたします。
お世話になっております。
さて、解決しましたのでご報告させていただきます。
結論といたしましては、対象の仮想ディレクトリがルートのひとつ下のディレクトリで行っていた事が原因でした。
仮想ディレクトリ直下へファイルを移動したところ、解決しました。
また、web.configで出てしまうエラーも、ビルドのプロパティを.net framewok2.0に設定することで解決しました。
基本的な部分でのミスでお手数おかけして申し訳ございませんでした。
色々とご教授いただいたおかげで、問題解決に繋がりました。
本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】エラーが発生⇒実行時エラー58既に同名のファイルが存在 5 2022/08/31 10:03
- Windows 10 Windows Updateが動作しません 7 2022/08/12 16:26
- Visual Basic(VBA) M365環境での動作エラー、及び対応相談 1 2023/01/27 04:18
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Microsoft ASP C#からvbsを実行したい 5 2022/11/24 17:31
- Excel(エクセル) 【VBAファイル移動】2つのマクロを順に実行。1つ目のマクロが実行不可⇒2つ目が実行不可となる件 2 2022/07/29 12:17
- Android VBA、フォルダのパスに環境文字 ㉑ があり、VBAが機能しません。 2 2022/07/27 09:16
- サーバー Webサイト構築フリーランスの案件受注について 1 2022/03/27 18:16
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
現在位置より2つ上のディレク...
-
UWSCでファイルのアップロード...
-
【PHP】declare命令で”Fatal er...
-
aspのページが表示できません
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
[ ディレクトリ '.' は書き込み...
-
makefile でファイルをコピーす...
-
ファイル選択ダイアログで選択...
-
C言語でのディレクトリ作成につ...
-
visualstudioでc#のdllができない
-
頻繁にDBへアクセスするページ...
-
FTPコマンドでディレクトリごと...
-
フォントの色を変えるには?
-
PHPの設定で、 エラーが発生し...
-
onedrive にexcelファイルをア...
-
Linux:PHPでTELNETによるSMTP...
-
ListViewコントロールでサムネ...
-
ボタンのクリック数を合計保存...
-
ワードプレス、Contact Form 7...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
バッチを用いたフォルダの自動移動
-
CFileDialogの最初のディレクト...
-
visualstudioでc#のdllができない
-
ファイルアップロードに関して...
-
現在位置より2つ上のディレク...
-
makefile でファイルをコピーす...
-
fopenでファイルが開かない場合...
-
rmdirでフォルダが消せません
-
絶対パス?絶対アドレス?意味...
-
VB.NET 最下位のディレクトリ名...
-
コマンドプロンプトを指定のデ...
-
VB2008でFTPでのディ...
-
DLL のロードの順序
-
MkDir関数
-
ファイル選択ダイアログで選択...
-
図に示す階層構造で,現在のデ...
-
[ ディレクトリ '.' は書き込み...
-
JAVA内で複数のファイルを削除...
おすすめ情報