C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: .net1.1−.net2.0へ


(過去ログ 31 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■14847 / inTopicNo.1)  .net1.1−.net2.0へ
  
□投稿者/ こまった (1回)-(2008/02/27(Wed) 17:11:59)

分類:[.NET 全般] 

いつもお世話になっております。
asp.netの開発経験がないもので質問いたします。

asp.net(VB.NET)とasp,でアプリ開発していました。
win2000,.netframework1.1で正常にうごいているものを

win2003で動作確認しています。
この環境でそのまま以前のウェブアプリをインストールし
しばらく動かしていると
できていた挙動がおかしくなりうごかなくなりました。
エラーとしては
なにやらオブジェクト参照がインスタンスに設定されていませんとでて
その下になにならプログラムの場所がかかれてありました。。。
少し前まで動いていたのに、まったくうんともすんともいわなくなってしまいこまっています。

もう一つ質問があるのですが
昔のウェブアプリをインストールするとinetpubの配下にフォルダができてそこに必要なプログラムがはいるようになっているのですけど、それを直に(ノートパッド)いじってだいじょうぶでしょうか?

あたらしくVSをインストールしてそのVBなりのプロジェクトを開いて変換しなければならないのでしょうか?

実はVSのウェブアプリケーションの作成の仕方もよくわからないもので。。。
XPでできるのでしょうか?使ってるシステムではDBでSQL,そういうのもXPにいれてやらないと動作しませんよね?
引用返信 編集キー/
■14853 / inTopicNo.2)  Re[1]: .net1.1−.net2.0へ
□投稿者/ まどか (462回)-(2008/02/27(Wed) 17:38:59)
#一部分だけ

> なにやらオブジェクト参照がインスタンスに設定されていませんとでて
> その下になにならプログラムの場所がかかれてありました。。。

その例外だけをみると99%はバグ(考慮漏れなど)なのですが、
環境の変化によりありえないことがありえる状況に変化したことも否定できません。
いずれにせよ、そのオブジェクトが何なのか、そしてそれがNull(Nothing)になる条件は何か、と原因究明しなければ先へ進めません。
プログラムの場所が出ているということなので、どのオブジェクトかあたりをつけられますか?
できればデバッグビルドしたものを動かして再現させれば、ソースの行番号も出てきますのでかなり絞り込むことはできるでしょう。


> 昔のウェブアプリをインストールするとinetpubの配下にフォルダができてそこに必要なプログラムがはいるようになっているのですけど、それを直に(ノートパッド)いじってだいじょうぶでしょうか?

所詮ファイルですのでいくらでも書き換えはできます。
しかし、ほんとに「そのファイル」の「その場所」だけでよいのかなど他のファイルとの関連性や副作用について理解していないと
動作しなくなったり変な挙動になったりします。
引用返信 編集キー/
■14857 / inTopicNo.3)  Re[2]: .net1.1−.net2.0へ
□投稿者/ こまった (2回)-(2008/02/27(Wed) 18:53:38)
ありがとうございます。
> その例外だけをみると99%はバグ(考慮漏れなど)なのですが、
> 環境の変化によりありえないことがありえる状況に変化したことも否定できません。
> いずれにせよ、そのオブジェクトが何なのか、そしてそれがNull(Nothing)になる条件は何か、と原因究明しなければ先へ進めません。
> プログラムの場所が出ているということなので、どのオブジェクトかあたりをつけられますか?
> できればデバッグビルドしたものを動かして再現させれば、ソースの行番号も出てきますのでかなり絞り込むことはできるでしょう。

例外の型:system.NUllReferenceException
例外のメッセージ:オブジェクト参照がオブジェクトインスタンスに設定できません。
例外のスタックトレース:場所GPS.gps_Week.ShowSchedule_Detail(XmlNode objXmlNOde_in,String strYMD,TableCell& objCell, String& strCellOverText, Boolean& blnLogonUserFlg)
場所:D:\Inetpub\wwwroot\GPS\gps_Week.aspx.vb:行677
とあり
そこの行をみると

If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
strTextdescription = objXmlNode.SelectSingleNode("@textdescription").Value
End If
'場所
If Not (objXmlNode.SelectSingleNode("@location") Is Nothing) Then
strLocation = objXmlNode.SelectSingleNode("@location").Value
End If

'終日フラグ
strSyujituFlg = objXmlNode.SelectSingleNode("@alldayevent").Value

'プライベートの予定の場合、ログオンしたユーザー以外のプライベートな予定は出力変更
If Not (objXmlNode.SelectSingleNode("@sensitivity") Is Nothing) Then
If objXmlNode.SelectSingleNode("@sensitivity").Value = "Private" And blnLogonUserFlg = False Then
'プライベートの場合、フラグを設定し、
'OWA起動の禁止・カーソルの変更の禁止・出力内容のい抑制を行う()
blnPrivate = True
strSubject = "プライベートな予約"

その近辺にはこのようなものがかかれていました。
どこがNUllなのかよくわかりません。。。
サーバにインストールしているのでデバッグ?でとめて値をみることもできません。
もう少し、わたくしに
おちからをお貸しください・


>>昔のウェブアプリをインストールするとinetpubの配下にフォルダができてそこに必要なプログラムがはいるようになっているのですけど、それを直に(ノートパッド)いじってだいじょうぶでしょうか?
>
> 所詮ファイルですのでいくらでも書き換えはできます。
> しかし、ほんとに「そのファイル」の「その場所」だけでよいのかなど他のファイルとの関連性や副作用について理解していないと
> 動作しなくなったり変な挙動になったりします。

ふうむ。わかりました。よくみていじります。
引用返信 編集キー/
■14859 / inTopicNo.4)  Re[3]: .net1.1−.net2.0へ
□投稿者/ まどか (463回)-(2008/02/27(Wed) 20:46:56)
> その近辺にはこのようなものがかかれていました。
> どこがNUllなのかよくわかりません。。。
> サーバにインストールしているのでデバッグ?でとめて値をみることもできません。

近辺ではなく書かれている行番号のみでよいです。
その行で使用している参照型の、変数・関数の戻り値・評価式に可能性があります。
ブレークできないのであれば、簡単なファイルへ出力するプロシージャを作成して
該当行の直前で可能性のある変数なりの内容を出力してください。
ただし、そこで同じ例外が起きるとやな感じですので
たとえば、
If Obj.Prop1 = "1" Then
でしたらObjに可能性があるので
If Obj Is Nothing Then
    WriteData("Obj Is Nothing")
End If
If Obj.Prop1 = "1" Then
のように可能性のあるものに対してならべてください。
#Webなので書き込み権限に注意してください。

引用返信 編集キー/
■14860 / inTopicNo.5)  Re[3]: .net1.1−.net2.0へ
□投稿者/ まどか (464回)-(2008/02/27(Wed) 20:50:55)
No14857 (こまった さん) に返信
> If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
> strTextdescription = objXmlNode.SelectSingleNode("@textdescription").Value
> End If

とりあえず、可能性としては
SelectSingleNodeは指定したパスが無ければNothingを返しますが、そのチェックをせずに直接Valueプロパティを見ているところです。

環境が変わったということですよね。
単にあるべきXMLファイルが無いとか、違う場所にあるとか
そんな気がしてきましたが。。。
引用返信 編集キー/
■14867 / inTopicNo.6)  Re[4]: .net1.1−.net2.0へ
□投稿者/ こまった (3回)-(2008/02/28(Thu) 09:36:23)
No14860 (まどか さん) に返信
> ■No14857 (こまった さん) に返信
>> If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
>> strTextdescription = objXmlNode.SelectSingleNode("@textdescription").Value
>> End If
>
> とりあえず、可能性としては
> SelectSingleNodeは指定したパスが無ければNothingを返しますが、そのチェックをせずに直接Valueプロパティを見ているところです。
>
> 環境が変わったということですよね。
> 単にあるべきXMLファイルが無いとか、違う場所にあるとか
> そんな気がしてきましたが。。。

ありがとうございます。

もう一度ソフトをアンインストールしてインストールして再度やってみました。(ソース解析はまだしてないです)
で、もう一度同じエラーをだしてよーく確認してみると、場所でファイルの場所がかかれるのですが
(画面上に例外エラーが出た場合上記の質問の時のようにメッセージがでるしくみらしい。)
場所:d:\xxxxx.vb:行xxx
と。
現在cにあるはずなのですが、E?とかになってるじゃないですか?
これは単にエラーメッセージ書き込み処理が直にかかれているからでしょうか?でもソースをみても直にかいてませんでした。
それとも、コンパイル?かなにかそこでしなおせばいいのでしょうか?
そのへんもやはりからんできているのでしょうか?

何分、他人のソース解析と経験がないもので四苦八苦しているじょうたいです。。。。
引用返信 編集キー/
■14871 / inTopicNo.7)  Re[5]: .net1.1−.net2.0へ
□投稿者/ まどか (465回)-(2008/02/28(Thu) 10:10:40)
>> If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
>> strTextdescription = objXmlNode.SelectSingleNode("@textdescription").Value
>> End If
>
> とりあえず、可能性としては
> SelectSingleNodeは指定したパスが無ければNothingを返しますが、そのチェックをせずに直接Valueプロパティを見ているところです。

なんか変なこと書いてました。。。
NothingのチェックをしてるのでThenでは問題ないですね。
でもValueプロパティはNull(Nothing)の場合があるようです。
http://msdn2.microsoft.com/ja-jp/library/system.xml.xmlnode.value(VS.80).aspx


> 場所:d:\xxxxx.vb:行xxx
> 現在cにあるはずなのですが、E?とかになってるじゃないですか?
> これは単にエラーメッセージ書き込み処理が直にかかれているからでしょうか?でもソースをみても直にかいてませんでした。

これは、ビルドしたときのソースの場所です。
「Cにあるはず」というソースをビルドして使用すれば「C:\」になると思います。
まぁ、場所より「ビルドに使用されたソースはこれ」というほうが大事ですが。

ところで、先に書いたように、インストール後に設定しなければならないことや用意しなければいけないファイル等、
要は動作させる前に必要なことはおこなわれているかという確認はOKですか?

引用返信 編集キー/
■14873 / inTopicNo.8)  Re[6]: .net1.1−.net2.0へ
□投稿者/ こまった (4回)-(2008/02/28(Thu) 10:21:58)
No14871 (まどか さん) に返信
> >> If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
> >> strTextdescription = objXmlNode.SelectSingleNode("@textdescription").Value
> >> End If
>>
>>とりあえず、可能性としては
>>SelectSingleNodeは指定したパスが無ければNothingを返しますが、そのチェックをせずに直接Valueプロパティを見ているところです。
>
> なんか変なこと書いてました。。。
> NothingのチェックをしてるのでThenでは問題ないですね。
> でもValueプロパティはNull(Nothing)の場合があるようです。
> http://msdn2.microsoft.com/ja-jp/library/system.xml.xmlnode.value(VS.80).aspx
>
>
>>場所:d:\xxxxx.vb:行xxx
>>現在cにあるはずなのですが、E?とかになってるじゃないですか?
>>これは単にエラーメッセージ書き込み処理が直にかかれているからでしょうか?でもソースをみても直にかいてませんでした。
>
> これは、ビルドしたときのソースの場所です。
> 「Cにあるはず」というソースをビルドして使用すれば「C:\」になると思います。
> まぁ、場所より「ビルドに使用されたソースはこれ」というほうが大事ですが。
>
> ところで、先に書いたように、インストール後に設定しなければならないことや用意しなければいけないファイル等、
> 要は動作させる前に必要なことはおこなわれているかという確認はOKですか?

度々ありがとうございます。
インストール後に設定すべきことはすべて設定しています。
元々動いていた環境を全て記載させていただきますと
・win2000server
・exchange2000
・msde2000
でうごいていてこれを
・win2003server(64bit)
・exchange2007(64bit)
・SQL2005
で動かそうとしています

1.ソフトをインストール
2.設定ファイルを設定
3.起動

としています。
ところで、上記回答でXMLのファイルがないとはどういうことでしょうか?
インストールしただけなので既存に全てファイルはあるとおもうのですが・・・。
引用返信 編集キー/
■14874 / inTopicNo.9)  Re[3]: .net1.1−.net2.0へ
□投稿者/ Tom Yama (31回)-(2008/02/28(Thu) 10:35:04)
No14857 (こまった さん) に返信
> 例外の型:system.NUllReferenceException
> 場所:D:\Inetpub\wwwroot\GPS\gps_Week.aspx.vb:行677
と出てて、その「行677」ってのが、
> If Not (objXmlNode.SelectSingleNode("@textdescription") Is Nothing) Then
なんですよね?

であれば、これは、objXmlNode が null になっているってことのはずなので、
何故、そうなっているか、ソースを見て調べればよいと思うのですが。。
引用返信 編集キー/
■14879 / inTopicNo.10)  Re[4]: .net1.1−.net2.0へ
□投稿者/ こまった (5回)-(2008/02/28(Thu) 11:00:49)
流れを追いたいんですが、
このサーバにVS2005をインストールして

デバッグ?っていうか流れを追うことができるでしょうか?

その場合はどのようにやればいいのですか?
単純な質問ですいません。。。

いま、単純にソースをノートパッドとかでみていて実際どんな値がはいっているかわりません。
引用返信 編集キー/
■14883 / inTopicNo.11)  Re[5]: .net1.1−.net2.0へ
□投稿者/ Tom Yama (32回)-(2008/02/28(Thu) 11:42:11)
No14879 (こまった さん) に返信
> 流れを追いたいんですが、
> このサーバにVS2005をインストールして
>
> デバッグ?っていうか流れを追うことができるでしょうか?
>
> その場合はどのようにやればいいのですか?
> 単純な質問ですいません。。。
>
> いま、単純にソースをノートパッドとかでみていて実際どんな値がはいっているかわりません。
今回の例ですと、objXmlNode に値を代入しているところがあるはずなので、そこが問題ないかチェックします。
そこでも問題がなければ、そこの代入元に値を代入しているところがあるはずなので、そこを探してチェックします。
...
という具合に、プログラムの流れを逆にたどっていって、どこかおかしいところがないかを探します。

で、このようにたどった結果、その関数のいずれかの引数にたどりついた場合、その関数の呼び出し元を調べる必要があります。
これには、その例外発生時のスタックトレースを見る必要があります。

が、申し訳ありません。どうすればスタックトレースを見れるかについては、実は知りません。
# デバッガが使えないなんて、なんて、不便なんだ。

# 中途半端な回答になってしまい、申し訳ありません。
引用返信 編集キー/
■14884 / inTopicNo.12)  Re[6]: .net1.1−.net2.0へ
□投稿者/ Tom Yama (33回)-(2008/02/28(Thu) 11:50:58)
No14883 (Tom Yama さん) に返信
で、今回の場合ですが、想定される原因としては、

1. XMLファイルがない。or XMLファイルが、「プログラムが想定している場所」にない。
2. 実は、XMLファイルの中身が、以前と変わっていた。
3. 実行環境が変わったせいで、XMLファイル中の、以前は参照されていなかった箇所が参照されるようになった。
で、その箇所に、必要な記述がない。
4. そもそも、プログラムがバグっているのだが、以前は、たまたま、動いていた。
くらいですかね。

最も、1. の場合だと、別の場所で別の例外が出そうな気がします。
引用返信 編集キー/
■14953 / inTopicNo.13)  Re[7]: .net1.1−.net2.0へ
□投稿者/ なちゃ (108回)-(2008/02/29(Fri) 10:16:32)
インストール後に設定すべきことのなかに
ASPNETアカウントからのアクセス権追加とかあったりして…

引用返信 編集キー/
■15039 / inTopicNo.14)  Re[8]: .net1.1−.net2.0へ
□投稿者/ こまった (6回)-(2008/03/03(Mon) 09:11:15)
みなさんありがとうございました。
とりあえず、一度クローズして、もうすこし原因をしらべてみます。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -