【質問】ASP.NETスレ ..
202:nobodyさん
09/05/06 03:19:58
>>199
>実行時バインドで動的に書き換えるならどうとでもなるだろ
IDは書き換えられないでしょ
>マスターページやUpdatePanelでもID変わるのがなぁ
こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
コントロール配置してもIDは変化しないよ(Repeater等は除く)?
>自分で指定したIDと、実行時に出力されるIDが違う(ことがある)、ってことなんだよ
まったくソースをみてくれてないんだなぁ。
誰もIDの話なんかしていないんだけど。
>そもそもrunat="server"つけると、解析エラーになったサーバコントロールのIDにバインド式は書けない模様
だからID名を実行時にバインドしろなんて言っていないし、
>>192-194でもそんなことしてないんだが。
なんで>>192-194のソースを見て何をしているか理解しようとしてくれないのか理解に苦しむ。
203:nobodyさん
09/05/06 06:54:06
>>202
>IDは書き換えられないでしょ
サーバコントロールじゃないhtml要素なら書き換えられる
>こちらのテストではASP.NET AJAXフォームに設置したUpdatePanel内に
>コントロール配置してもIDは変化しないよ(Repeater等は除く)?
これ、サーバコントロールでも?
後日検証してみる
>まったくソースをみてくれてないんだなぁ。
>誰もIDの話なんかしていないんだけど。
>>176,183 あたりの流れから話してるんだと思ったが、そうじゃなかったのか
じゃあお前に絡んだ俺が悪かった
>だからID名を実行時にバインドしろなんて言っていないし、
>>192-194でもそんなことしてないんだが。
>>193の
<div id = "<%# Container.ClientID %>">
は、IDを実行時にバインドしてるのじゃないのかね?
まあ、IDがどうこうを主眼にしてないなら、>>192-194について
これ以上俺が言いたいことはない
話がかみ合わないのも当然で、あやまっておく
204:nobodyさん
09/05/06 09:13:30
>>164
>>201
ご返答ありがとうございます。
リスタートの条件はこれくらいかな。
URLリンク(www.atmarkit.co.jp)
仮想ディレクトリ下のファイル・ディレクトリをいじってるので、
これが怪しい気がしてきた。
aspx等のみ対象だったら無関係だけど。
URLリンク(support.microsoft.com)
なんにせよリスタートしているか確認して出直してきます。
205:nobodyさん
09/05/06 10:44:48
>仮想ディレクトリ下のファイル・ディレクトリをいじってるので、
どういじってる?
例えばフォルダ作ったりしたら強制再起動だった気がするぞ、詳細は覚えてないが。
206:nobodyさん
09/05/06 10:49:18
基本的にアプリからいじっていいのは、
App_Data配下のみだと思っておいた方がいい。
207:nobodyさん
09/05/06 11:16:35
以外と良いスレだな。
208:nobodyさん
09/05/06 11:46:30
>>203
何がしたいんだ?
反論のための反論か?
209:BASP21でメール送信の際 503エラーが起こっています。1
09/05/06 13:07:40 rRUTbrry
この質問をご覧いただきましてありがとうございます。
普段、Linux系のサーバを使っていますが、臨時でwindows + ASPのトラブルに当っています。
ASPサイトにて、BASP21で問題無くメール送信をしていたのですが、つい1週間程前から503エラーとなり、原因が判らず困っております。
コードは
Set ObjBasp = Server.CreateObject("basp21")
rc = ObjBasp.SendMail(メールサーバ,メールto,メールfrom,サブジェクト,mbody,"")
Set ObjBasp = Nothing
となっていて、1週間前まで送信に問題はありませんでした。
エラー戻り値は
503 This mail server requires authentication when attempting to send to a non-l
となっています。
認証が必要なのかと思ったのですが、全く同じソースの、別のページでは
503エラーは出るものの、メールは送信できています。
逆に、メールが全く送信できないページがあり、そこの対処で四苦八苦しております。
210:BASP21でメール送信の際 503エラーが起こっています。2
09/05/06 13:14:29 rRUTbrry
サーバはwindows2003です。
サーバ管理者に問い合わせたところ、
> > 要求情報:
> > 要求 URL: URLリンク(www.xxxxxx.co.jp)
> > 要求パス: /WebResource.axd
> > イベント コード: 3005
> > イベント メッセージ: An unhandled exception has occurred.
> > 例外情報:
> > 例外の種類: CryptographicException
> > 例外メッセージ: パディングは無効なので、削除できません。
との返答が帰ってきましたが、
サーバに /WebResource.axd というファイルは無く、
この返答がよく判っていない状況です。
ご指導いただければ幸いです。
211:nobodyさん
09/05/06 14:39:29
WebResource.axd要求してるということは、ASP.NETだと思うんだが
まず、ASP.NETなのか旧aspなのか?
212:BASP21でメール送信の際 503エラーが起こっています。
09/05/06 16:30:05 rRUTbrry
お返事感謝致します。
本当に不慣れでお恥ずかしい限りですが、
.NETでは無いと思われます。
下記が、ルートにある Default.aspx の頭の部分です
<%@ Page Language="VB" MasterPageFile="~/xxxxe.master" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" title="xxxxxxx" %>
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
213:nobodyさん
09/05/06 16:53:20
.aspxってのは普通ASP.NETの拡張子なんだがな
.aspxのなかでServer.CreateObject("basp21") やってるのか?
214:BASP21でメール送信の際 503エラーが起こっています。
09/05/06 17:37:24 rRUTbrry
お返事遅れて申し訳ありません。
Set ObjBasp = Server.CreateObject("basp21")
自体は、単体のdefault.aspで行っております。
215:nobodyさん
09/05/06 19:22:43
>>203
いやだからだな・・・
サーバコントロールはRepeaterなどで配置するとIDが変わる
↓
jQueryを使えばいいじゃない
↓
jQuery使ったことないけどID直接指定(ID変わるから)できないから無意味では?
↓
jQueryでサーバコントロールに指定したclass名で直接的にオブジェクト取得できるし
jQueryで<div id=''></div>で囲めばid名で直接的にオブジェクト取得できるよ
(class名は変わらないし、<div>のタグはサーバコントロールではないのでID変わらないから)
という流れで話しているのに、
>>197 >だから、それなら自分で実装できないかと思ったんだよ→だから代替方法を説明してるんですが・・
>>199 >実行時バインドで動的に書き換えるならどうとでもなるだろ→サーバコントロールはできないです
>>203 >は、IDを実行時にバインドしてるのじゃないのかね?→サーバコントロールできないからIDかわらんdivで代替してるんです
と、かみ合ってないのは、あなたとほうだと思う
216:nobodyさん
09/05/06 19:26:54
だから>>192-194を実際に動作させて、少しソースをいじってくれれば、
Repeaterコントロール内に設置された、
ASP.NETによって長いIDが勝手に付けられてしまうコントロールでも
オブジェクトを取得できるということを示していることがわかると思ううんだが、
なんで試してくれないの?
MasterPageでも同様の手法で、長いIDに変わってしまうコントロールを
取得できるから、わりと便利だと思うんだが。
217:nobodyさん
09/05/06 19:42:52
>>209
URLリンク(www.kotaete-net.net)
218:nobodyさん
09/05/06 21:11:31
>>216
ためしてるし、お前が示している範囲ではおまえの言うとおりだ
219:nobodyさん
09/05/06 21:43:45
ASPかASP.NETかどっちなんだよw
220:nobodyさん
09/05/06 22:39:19
>>215
>>203が馬鹿なんだから、ほっとけ
221:nobodyさん
09/05/07 00:48:26
ASP.NET AJAX + jQueryで適当にやってると酷いことになるよね
ASP.NET + jQueryかASP.NET AJAXオンリーにするかで分けた方がいいと思う
222:nobodyさん
09/05/07 03:13:36
>>214
Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は
.aspxじゃなくて.aspなのか?
まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
223:BASP21でメール送信の際 503エラーが起こっています。
09/05/07 11:20:52 eAkk+1Gw
皆さん、お忙しい中ご返答感謝いたします。
確認したところ、ASP.NETでした。
>>222 様
Server.CreateObject("basp21") やってるソースがあるファイルの拡張子は asp です。
>まあ、単にメールサーバーがSMTP認証要求してるだけの気がするが
私も、今はその線が強いと感じて現在テスト中です。
今まで、問題がありませんでしたので、なぜ急に・・・と思っているのですが。
しかもメール自体は送信されているので・・・
サポートからの/WebResource.axd が問題という所でASP系資料ひっくり返したり、
孤軍奮闘でしたので、お返事大変心強いです。感謝致します。
224:nobodyさん
09/05/07 12:21:41
>>223
マルチポストしてんじゃねーよ 失礼だろ
URLリンク(www.kotaete-net.net)
225:BASP21でメール送信の際 503エラーが起こっています。
09/05/07 12:38:46 eAkk+1Gw
>>223 様
失礼がありましたこと、お詫び申し上げます。
226:nobodyさん
09/05/07 21:14:30
/WebResource.axdはASP.NET特有。
だが問題のページはaspだという。
だが確認してみればASP.NETだという。
227:BASP21でメール送信の際 503エラーが起こっています。
09/05/07 23:08:17 o/J6ITqf
本当に門外漢ですみません・・・サイト自体は全く知らない人間が作ったものでして・・・
サポートの続報では、
認証は必要無いそうです。
メールは送れてるので、
default.asp内のObjBasp.SendMail 自体は動いていて、
何か他の部分でしくじってて、それが
ObjBasp.SendMailの戻り値503と/WebResource.axdのエラーとしてでてるのだろうと。
しかし、ObjBasp.SendMailの戻り値と/WebResource.axdの関連性がイマイチわかりません。
メールが送れてるにも関わらず、503の戻り値があり、
そのエラーのヒントは /WebResource.axd だということなのですが・・・
228:nobodyさん
09/05/07 23:53:45
ヒントってなんだよw ヒントもらってるなら正解も教えてもらえw
aspならWebResource.axdは直接関係ないよ
ObjBasp.SendMailの戻り値503 って何をどうやって何を確認してるんだ
229:nobodyさん
09/05/08 00:08:57
マルチポスト野郎は消えてくれよ
誰も教えないだろこんな状況じゃ
本当に失礼だと思うならこっちでも詫びいれてるはずだよな?
URLリンク(www.kotaete-net.net)
230:nobodyさん
09/05/08 00:58:30
ヒントとか・・・
何となくわかってるけど解決してないとかそういうもんじゃねぇのかw
調べる時間を得るために
231:nobodyさん
09/05/08 01:46:47
ascxファイルとcsファイルを作ったんだが、上手く値が渡されない(Labelとか)
aspxのときは問題なくいったんだが、ascxにした途端、宣言したlabelはnullがなんとかとかいって、
値がうまく共有?出来ない
どなたが打開のヒント頂けませんか?
232:nobodyさん
09/05/08 01:55:36
ソースをうぷしれ
233:nobodyさん
09/05/08 12:01:02
>>231
UserControl1.Findcontrol("Label1").text = "hage"
//キャスト省略
234:nobodyさん
09/05/08 18:05:34
>>233は教えてあげる目的でそういう記述してくれてると思うけど、
実際にはLabelオブジェクトをプロパティで公開するか
Label.Textを公開してあげればいいんじゃないかと思われる
235:231
09/05/09 00:26:29
ごめんなさい、非常に強い睡魔で寝てしまいました
>>232-234
俺の勘違いでイベント発生してないだけでした
本当にバカでした
236:nobodyさん
09/05/09 09:51:49
(#^ω^)…
237:nobodyさん
09/05/09 13:10:10
それでもlabelobjectがnullな状態ってのがよくわかんないね
238:nobodyさん
09/05/09 23:37:56
くっそー
いままでprototypeだったけどjquery結構便利だな
なんか和んだ( ´ー`)フゥー...
239: [―{}@{}@{}-] nobodyさん
09/05/11 09:16:40
>>238
VS2008SP1からだったか、jqueryは標準サポートだしな
240:nobodyさん
09/05/12 00:01:12
VS2005でなんとかしてjQuery使えないかな
IntelliSenseは無くてもいいから
241:163
09/05/12 01:28:31
>>204の続きです。
以下のイベントログが出力されており、
AppPoolが再起動している為、
セッション情報が消えてるぽいです。
クラッシュダンプで調べるしかないでしょうか?
他に調査方法があればご教授お願い致します。
・イベントログ
アプリケーション プール 'xxx' を提供しているプロセスは、
World Wide Web 発行サービスで致命的な通信エラーを検出しました。
イベントID 1011
242:nobodyさん
09/05/12 01:37:48
>>240
普通にJQueryいれりゃいんじゃないか?
243:nobodyさん
09/05/12 05:14:26 U71Iyk1V
旧ASPでPDFファイルを作成したいのですが、どんな方法があるでしょうか。
PDFは表形式で、グリッドの高さは可変で、行の途中にページの境目が来る
ようならその行の前に改ページしなくてはなりません。
サーバー側の処理でPDFファイル化したいです。
よろしくお願いします。
244:nobodyさん
09/05/12 06:58:22
安心したまえ。PDFだってテキスト直うちで書けるんだ。
つまり、FileSystemObjectでテキストファイルを生成して、
後はPDFの仕様通り文字列を吐き出せばいいだけだよ。簡単でしょ。
マジレスすると、無理だから別途そういうパッケージソフトを買う。
ビジネスソフト板で帳票作成ソフトというと、まぁ数は限られるから調べてみるといい。
245: [―{}@{}@{}-] nobodyさん
09/05/12 09:09:04
>>241
本質的な解決ではないけど、session維持したいなら
stateserverモードを使うとかどうよ?
246:nobodyさん
09/05/12 10:47:32
ClassicASPでPDFって言うと何があるのかね
ASP.NETならActiveReport一押しなんだけど
247:243
09/05/12 11:35:40 U71Iyk1V
>>246
ActiveReportって定型のフォーマットしかできないイメージなんですが、
グリッドの高さ変えたりページはみだす前に改行したりできますか?
248:nobodyさん
09/05/12 12:00:02
>>247
フリーハンドで描画できるだろ。
249:nobodyさん
09/05/12 12:03:03
>>247
CanGrowとかCanShrinkとか
まぁ・・・簡単な動的〜FORMATイベントとか駆使して複雑な動的ってのもできるっちゃぁ出来ると思うけど
たいがいの案件はこなせてきた
一回体験ばん入れて使ってみればどうかな?
250:249
09/05/12 12:03:47
だめだ・・・日本語が支離滅裂だ…
疲れてんのかな・・・
251:nobodyさん
09/05/12 13:08:49
>>247
>グリッドの高さ変えたりページはみだす前に改行したりできますか?
設計が悪いだけじゃない?
改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕だと思うけど
おおよその要求には応えてくれたけど、できないこともあるかもしれない
例えば1行に記述できず2行に伸長してくれたとき、
それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
もしくはそのまま印刷してくれるを選択できるとか、フッターの表示の関係とか。
グリッドの高さについては、サンプルのCreating and Modifying Report Layouts at Run Time
にあるように実行時調整してしまえば、可能と思われる(英語版ですまん)
>The format event allows the properties of report sections and controls
>to be modified including height, visibility, and other visual properties.
//フォーマットイベントでは、レポートセクションやコントロールの高さや表示/非表示などを含む
//表示に関するプロパティを変更することができる
252:nobodyさん
09/05/12 13:13:33
↑
すまん上の「できない例」は想像の話。
グループヘッダーとか、レポートのフッターの改行とか伸長とか、改ページごとに表示するとかは
帳票によってクセがあったり得手不得手があるもんなので、試してみるしかないね。
253:nobodyさん
09/05/12 13:26:34
>>251
ActiveReportsならASP.NETのも基本的に変わらないけど
>改行したら自動的に2行分に伸長してくれて描画してくれるとか余裕
CanGrowプロパティだったかな? で伸縮させるように出来る
>それがページの最下行だったら改ページして次ページの最上行にしてくれるとか、
>もしくはそのまま印刷してくれるを選択できるとか
プロパティいじるだけでそうなるはず。
KeepTogetherかなんか忘れたけど
高さ操作は処理中にしようと思うと基本的にFormatイベントでのみしか推奨されていないけどいける
中途半端な知識なんで勘違い多いかも知れんが
254:nobodyさん
09/05/13 10:29:56
CustomValidatorを継承したコントロールを作ったんだけど、
ページ内のValidationSummaryがErrorMessageを拾ってくれない。
isValidやErrorMessageは正しくセットされていることは確認した。
カスタムコントロールのは拾ってくれないのかな?
255:nobodyさん
09/05/13 11:41:36
継承って文字通り継承?
それともユーザコントロール?
256:nobodyさん
09/05/13 13:01:18
文字通りの継承。
検証失敗時にTextが表示されるし、
ValidationGroupも検知して検証してくれている。
ただ、なぜかValidationSummaryに反映されない。
もちろんPage.IsValidもfalseになってる。
257:nobodyさん
09/05/13 14:31:56
Page.GetValidators()を調べてみたんだが、
単にメンバに持ってるValidatorCollentionをsingletonで返してるだけなんだな
どうやってValidatorCollentionにValidator(BaseValidator)をaddしてるのかよくわからん
ValidatorCollentionの中身も単なるIEnumerableを実装したリストクラスに見えるし
258:sage
09/05/13 15:35:29
チラ裏
今更ながらIIS+ASP.NET+SQLiteでゴニョゴニョしてみたけど、手軽で良いわこれ。
要IIS(monoっつー手もあるけど保留)な点さえクリア出来るなら、ちょっとしたページ作成なら
これでいいや。
259:nobodyさん
09/05/13 15:38:24
オレもこれやりたくてmono入れようとしてるけどSolarisだときっついな
まあ時間取れるまでWinサーバ使うか・・・
260:nobodyさん
09/05/13 19:23:50 EB+s12M/
.NET Framework 3.0のPage.PreviousPage.FindControlについて教えてください。
トップページにある「発言ボックス」に入力した文字列を、表示ページにて表示したいのですが
テキストボックスを参照できなくて困っています。
マスターテンプレート(Template.master)
┗トップページ (Default.aspx)
┗ユーザコントロール(Hatsugen.ascx ID=hatsu)
・テキストボックス コントロール(ID=moshi)
・ボタン コントロール(botan)
マスターテンプレート(Template.master)
┗表示ページ (showhatsugen.aspx)
という2つのページ(階層)があるのですが、トップページ側のボタンコントロールで
PostBackUrl="showhatsugen.aspx" としています。
showhatsugen.aspx側で、@ITの記事を参考にテキストボックス(moshi)を参照しているのですが
nullが返ってきてしまいます。
■試したこと
@@ITの記事のまんま試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("moshi");
Aユーザコントロールも参照しないとだめかもと試してみた。
TextBox a = (TextBox)Page.PreviousPage.FindControl("hatsu").FindControl("moshi");
Bテンプレートもいれないとだめかもと思って試してみた。
TextBox a = (TextBox)Page.PreviousPage.Master.FindControl("hatsu").FindControl("moshi");
上記のような階層の場合、どのように値を参照できるか教えてください。
■参考にした@ITの記事
URLリンク(www.atmarkit.co.jp)
261:nobodyさん
09/05/13 19:37:56 EB+s12M/
あ、できました。Bで。
262:nobodyさん
09/05/13 19:45:55
PostBackは原則的に同一ページにするのが望ましいというのはわかってて、
あえてそれをやってるんだよね?
263:nobodyさん
09/05/13 20:05:04
はぁ? 馬鹿じゃね。しねよ
264:nobodyさん
09/05/13 20:21:45
そこらの本読むとPostbackUrlやServer.Transferの方が
Response.Redirectよりよく思えるんだよな。
いやまぁ実際メリットもあるけど。
265:nobodyさん
09/05/13 22:50:11
ASP.NET MVCのほうが良いよ。
266:nobodyさん
09/05/13 23:01:05
PostbackUrlが良いと言ってるやつは実践してみてないやつ。
ASP.NETの各種仕組みと相性が悪い。
Server.Transferはいいんだけど。URLが紛らわしくなるため敬遠されることが多い。
267:nobodyさん
09/05/13 23:49:01
一つの画面に収まる機能は一つのページに記述して
異なるページに遷移するときはsessionだのcookieだの使用したほうがわかりやすいよね
asp.netの場合は1ページが1クラスだから、
クラス内の処理は、なるべくクラス内に責任もって記述してあげるのが
オブジェクト指向の観点からもわかりやすい気がする
各ページのクラスにCookieやSessionを扱う、
ICookieや、ISessionみたいなインターフェースを実装して、
Serializableなデータを保持するクラスを、
ページ間でやりとりできるようにしたら面白いのになと思ったり。
268:nobodyさん
09/05/14 00:02:25
>>267
うちはページ継承してベースページを作成して
各機能ページはそれを継承して処理ってる
セッション管理とかログインしているいないとかのチェックはベースページ側でやってたり
インターフェイスもいいけどなんか使いどころが難しくってさ・・・
各ページで実装もセにゃいかんし
レベルが低いだけだとは思うが
269:nobodyさん
09/05/14 00:15:25
やたらとインターフェイス使いたがるのもどうかしてる
270:sage
09/05/14 11:53:07 W6V8lEeJ
はじめまして。
現在vs2008、.NET FrameWork3.5にてASPのシステムを作成しています。
セッションが切れた場合の処理としてテストしているのですが
global.asaxでsession_startでセッションが切れた場合にエラー画面へ
リダイレクトする処理を入れているのですが
そこを通った後またsession_startに来てしまいリダイレクトしてくれません。
ログをみてもその関数が終わったらすぐにその関数というようになっています。
原因を知っている方お願いいたします。
If Me.Request.RawUrl.IndexOf("XXX.aspx") < 0 Then
If Session("UserId") = "" Then
Response.Redirect("URLリンク(XXXXX)")
End If
End If
271:nobodyさん
09/05/14 12:33:07
これかな?
エラーページにResponse.Redirectで遷移すると
設定したSessionが消えてしまうことがあるらしい
URLリンク(www.atmarkit.co.jp)
ログやそれに似た用途ならglobal.asaxでもいいけど
認証ならフォルダごとにWeb.configでやったほうがいいかも
272:270
09/05/14 13:26:27
>>271
的確なアドバイスありがとうございます。
リダイレクトをtransferにすることで対処できました。
273:nobodyさん
09/05/14 15:08:04
ここASP.NETだけど・・・
274:nobodyさん
09/05/14 15:18:31
WebフォームにCalendarコントロールを貼って
・日付が変更される毎にカウンターCcountを1増加させて表示(Label1)
・選択されたカレンダーの日付を表示(Label2)
・PageLoadされる毎にカウンターPcountを1増加させて表示(Label3)
させたい。
Partial Class _Default Inherits System.Web.UI.Page
Public Shared Pcount As Integer
Private Ccount As Integer
Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As _
System.EventArgs) Handles Calendar1.SelectionChanged
Ccount = Ccount + 1
Label1.Text = Ccount.ToString 'Calendarの日付が変更された回数を表示
'カレンダーの日付を選択したら、カレンダーの値を表示する
Label2.Text = Calendar1.SelectedDate.ToShortDateString
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles Me.Load
Pcount = Pcount + 1
Label3.Text = Pcount.ToString 'PageLoadされた回数を表示
End Sub
End Class
カウンターの定義で、上記のように Public Shared ではなく Private にすると
数値が初回+1しただけで、それ以上増分されません。
何がいけないのでしょうか?
275:nobodyさん
09/05/14 15:38:57
>>274
public shared PcountはASP.NET全体で利用するアプリケーション変数(グローバル変数)的なものだったと思う
privateにすると、そのPageのメンバ変数になるので、ポストバックすると新しいPageのインスタンスが生成されるから、
Pcountも新しいインスタンスの異なるメンバ変数扱いになってポストバック前のデータを保持しない
そう考えるとpublic sharedは便利と思うかもしれないけど、
複数の人が同時にそのページを利用すると、使用した人の数だけPcount++されてしまって
思ったような動作はしないと思うよ
Aさんが日付選択→Pcount → 1
Bさんが日付選択→Pcount → 2
Aさんが日付選択→Pcount → 3
Aさん2回目の使用でPcount==2のはずなのに途中でBさん使ったのでなぜかPcount==3
なんでPcountの値をセッションやクッキー、ViewStateに保存して
Page_Loadで復元するような処理を書く必要がある
この場合同じページへのPostBackだしセキュリティにも大きな影響を与えなさそうなので、
ViewStateがいいと思う
276:nobodyさん
09/05/14 16:02:31
早速のレスありがとうございます。
>privateにすると、そのPageのメンバ変数になるので、
>ポストバックすると新しいPageのインスタンスが生成されるから、
>Pcountも新しいインスタンスの異なるメンバ変数扱いになって
>ポストバック前のデータを保持しない
ということですね、理解しました。
データの保持の違いとか、処理タイミングとか、実行順とかまだ整理できて無くて
そのために簡単なサンプルフォームを作って、カウンター表示を仕込んで試しているのですが
条件が変わると自分の狙った内容と実行結果が違ってたりして、・・・頑張ります!
277:nobodyさん
09/05/15 19:06:29
Web開発の初期に、よくはまる道だ
がんばれ
278:nobodyさん
09/05/15 21:06:17
JavaScriptで好き勝手やって、ViewStateの内容と
同期しなくなるとか昔はまったな。
挙句、不正な操作扱いされたりとか。
279:nobodyさん
09/05/15 21:07:23
肝心なのはPublicかPrivateかじゃなくて
Sharedかそうじゃないかなんだが、大丈夫か
280:nobodyさん
09/05/16 00:33:16
最近VB.NETでのレスをよく見かけるが、実業務のasp.netでもVBって多いのか?
言語の優劣を語る気はないがなんとなく気になったC#使い。
281:nobodyさん
09/05/16 02:18:45
もともとのASPがVBだから、その流れでVBが多いんじゃない?
業務系もVB6の流れを汲むところは、今でもVB.NETが多いし
新しい言語に切り替えるって難しいよね
新しいテクノロジに理解があるところばかりじゃないし
過去の資産に縛られたりして
282:nobodyさん
09/05/16 03:21:32
で旧VBで下手に培われてしまった悪しき習慣が.NETにも浸食するんだぜ。
VBの頃はネットが普及したせいで、ばかみたいなコードや習慣が広がりすぎた。
でその悪しき習慣をASP.NETとかにまでそのまま持ってくるもんだからとんでもないことに。
283:nobodyさん
09/05/16 03:24:32
>>280
俺はC#だ
VBなんて見ただけで寒気がする
284:nobodyさん
09/05/16 04:40:23
質問
1.Global.asaxはシングルトンか?
2.Global.asaxにインスタンス変数を定義して、HttpContextのようにリクエストに関する情報を保持するのは問題ないか?
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行されるか?
4.ViewStateUserKeyはCSRF対策に利用できるか?
5.Global.asaxにインスタンス変数を定義して、グローバル変数として使えるか?
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは基本的に再利用されるものと期待できるか?
7.グローバル変数が必要な時Applicationオブジェクトを定義するのは望ましい方法か?
8.サーバを分散していない場合、ApplicationオブジェクトはそのWebアプリケーション内で完全に一つとみなしてよいか?
9.ViewStateは基本的に改ざん防止策がほどこさえているので、ViewStateの値は基本的に信用してよいか?
10.Webガーデンを使用していないのに、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得るか?
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全か?
12.フォーム認証でログアウトすると、その認証チケットでは二度とアクセスできなくなるか?
13.SQLインジェクションは、Webアプリケーション特有の脆弱性か?
285:284
09/05/16 12:15:07
ちなみに俺はリアルモンク属性だからはやく答えないと病院食を食うことになる
286:nobodyさん
09/05/16 12:23:16
自分で調べろって感じだな
287:284
09/05/16 12:36:25
実は理解度クイズだよ。
正答率は自称詳しい人でも結構低かったりもする。
>>285誰だよおまえはw
288:284
09/05/16 12:38:15
とでも書けば、誰かが答えてくれるに違いない
289:nobodyさん
09/05/16 12:44:04
いやいやクイズという限り、いつか出題者が回答するから問題ない
290:nobodyさん
09/05/16 12:46:21
まあ言われてみれば誤解さえれそうだが、ほんとにクイズだよ。
俺がさっきちょっと考えてみただけの。
テストや宿題じゃなくて(っていうか中身見りゃわかるだろうけど、そういうレベルの問題じゃない)
正解は○がって数書こうと思ったけど、結構偏ってるな、疑うなら書くが。
問題のニュアンスはわりと詳しいつもりやつが理解してないことが多かったもの。
その前に内容がマニアックに偏ってるけどな。
291:nobodyさん
09/05/16 12:58:07
こんな?
1× 2× 3? 4○ 5× 6? 7× 8○ 9○ 10?
11○ 12? 13×
?のとこはワカンネ
あと設定次第だったり、環境次第だったりするところがあるよね
ViewStateUserKeyが空文字の場合とか、
認証チケットは暗号化されてるけど認証に至るまでの経緯でhttpsでないと安全でない場合とか
292:nobodyさん
09/05/16 13:04:00
いや8も×か 中身じゃなくてApplicationオブジェクトそのものは別インスタンスかな
293:nobodyさん
09/05/16 13:08:00
正解は5個、かな?(ざっと確認してみたから間違ってたらすまんね)
環境しだいだったりするのは確かにあるが、
環境を特殊にどうこうした場合とかではなくて
一般的な標準的な状態と思ってもらっていい。
ViewStateUserKeyの場合はもちろん文字列をうまく設定すれば普通に利用できるか?という話だし、
認証チケットの扱いも特殊な状況は想定していない。
単にHTTPSじゃない経路で認証チケットを使うのは安全か?(認証チケット自体は暗号化されているが)。
ということ
Applicationオブジェクトは、そこに保存した変数というか、中身のことと思ってくれていいよ。
書き方悪かったな、いわゆるApplication変数はサーバ内で完全に一つと思っていいか?ということ。
294:nobodyさん
09/05/16 15:53:09
いやいや気になるから正確な答えを頼むよw
295:nobodyさん
09/05/16 16:34:45
2 4 9 10 が○
それ以外は×だよ
296:nobodyさん
09/05/17 06:17:41
基本的にとか、望ましいとか言っちゃうとあいまいさがのこるから
問題文もう1回精査してから回答とともにアップしなおしてくれ
297:nobodyさん
09/05/17 09:24:47
やだよめんどくさい。
1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義するば、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、はCSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
1.×
2.○
3.×
4.○
5.×
6.×
7.×
8.×
9.○
10.○
11.×
12.×
13.×
298:nobodyさん
09/05/17 11:05:51
>>295以上の情報が何もないじゃないか
解説ぐらい書けよ
299:nobodyさん
09/05/17 12:05:47
自分で調べろよw
300:nobodyさん
09/05/17 12:14:56
今携帯だから後で書くよ。
疑問のある番号あるなら疑問点を書いてね。
301:nobodyさん
09/05/17 12:40:24
5.Global.asaxにインスタンス変数を定義すると、グローバル変数として使える
インスタンス変数ってのは、スタティックじゃない変数ということかな?
Global.asaxにPublicな変数定義しとけば、グローバルに使えると思うんだが
302:nobodyさん
09/05/17 13:12:04
そ、スタティックじゃないってこと。
303:nobodyさん
09/05/17 13:16:28
単にグローバル変数ってのもやや曖昧だったね。
ここでは、アプリケーション全体で共有できるグローバル変数という意味。
まあだいたい一般的にこういう意味になるとは思うが。
304:nobodyさん
09/05/17 16:45:45
クイズ
1.Global.asaxのインスタンスはアプリケーションドメイン内で単一である
2.Global.asaxにインスタンス変数を定義すると、HttpContextのようにリクエストに関する情報を保持することができる
3.BeginRequestイベントとHTTPハンドラ(ページインスタンスなど)は常に同一スレッドで実行される
4.ViewStateUserKeyにユーザIDやセッションIDを設定すると、CSRF対策にも利用できる
5.Global.asaxにインスタンス変数を定義すると、アプリケーション全体で共有できるグローバル変数として使える
6.汎用ハンドラ(ashx)でIsReusableがtrueを返すように実装すると、そのハンドラは可能な限り再利用される
7.グローバル変数が必要な時はApplication変数を使用しなければならない
8.サーバを分散していない場合、Application変数はそのWebアプリケーション内で完全に一つである
9.ViewStateの検証が有効(デフォルト)の場合は、ViewStateの値にはインジェクション系の対策は不要である
10.Webガーデンを使用していない場合でも、そのアプリケーションプール用のワーカープロセスが複数同時に動作することはあり得る
11.認証チケットはデフォルトで暗号化されているため、HTTPSでなくても安全である(盗聴されても不正ログインはできない)
12.フォーム認証でログアウトすると、その認証チケットは無効となり、その認証チケットでは二度とアクセスできなくなる
13.SQLインジェクションは、Webアプリケーション特有の脆弱性である
305:nobodyさん
09/05/17 16:49:05
回答
1.×Global.asaxは各リクエストに一つのインスタンスが割り当てられる(リクエスト完了後はプールされて再利用)
2.○1.より、リクエストに関する情報をインスタンス変数に保持することができる
3.×セッション準備時の同期化などの仕組みにより、スレッドが切り替わることがある
4.○もちろん使える
5.×1.より、インスタンス変数はアプリケーション全体で共有できない
6.×実はIsReusableは無視されている(常に再利用されない、まあこれは今の実装の話であってどうでもいい話ではある)
7.×そんなわけはない(むしろApplication変数はあまりお薦めではない、これにはいろいろ理由があるが)
8.×Webガーデンを使えば単一にはならない、またアプリケーションのリサイクルなどにより一時的に複数になり得る
9.○検証が有効であれば、少なくとも中身を改ざんされることはない(キーが漏れてるとかそういう状況はない前提)
10.○ワーカプロセスのリサイクルにより、一時的に複数同時に動作することがある
11.×盗聴されれば見事に不正アクセスできる(チケットの暗号化の意味はまた別にある)
12.×認証チケットは無効にはできない(ログアウトはクッキーを消すだけ)、とくに有効期限が長い場合これは要注意
13.×そんなわけはない
306:nobodyさん
09/05/17 20:31:50
こういうのは問題の出し方が難しいな
主眼をどこに置くかで結果が違いそうなこともありそうだ
それはともかく知らないことがいくつかあったので勉強になったよ
今度実験してみようっと
307:nobodyさん
09/05/18 18:33:02
.NETっでviewState OFF設定にしても、実行したら勝手にviewStateが入ってるんだけどなんでなんだろう?
308: [―{}@{}@{}-] nobodyさん
09/05/18 18:35:32
>>307
イベント識別するのにもViewState使ってたと思うからその分じゃね
309:nobodyさん
09/05/19 01:35:59
でも.NETでできてるサイトで、ソース(htmlの)みてもviewStateが一切無いページとかあるんだよね。
つまり.NETのコントロール一切使わなければ出ないって事かな?
それだと.NET使う意味ねーな・・・
310:nobodyさん
09/05/19 01:54:25
例えばどこ?
311:nobodyさん
09/05/19 01:55:28
ああそうだMVCならでないかもね
312:nobodyさん
09/05/19 21:35:47
なんか、viewstate="false"ってやってても
<asp:CheckBox id="CheckBox1" runat="server" />
がたくさんあると、viewstateがえらいことになる・・・・
なんとかしてOFFにしたいもんだ
313:nobodyさん
09/05/19 22:02:16
実際に20個設置してみたけど、これがえらいこと??
PostBack前の状態を維持する仕組みをhiddenフィールドで
ベタに構築することを考えたら遙かにサイズは小さいと思うし、
セキュリティ的にも安心できるし、
十分に利便性はあると思うけど
それを考慮してもViewStateが嫌ならASP.NETを使わないか
旧ASPとして利用するしかないね
314:nobodyさん
09/05/19 23:02:51
enableviewstate=falseの意味ねーじゃん
ばか?
315:nobodyさん
09/05/19 23:11:27
20個設置してたら2kぐらいの文字列にならん?
316:nobodyさん
09/05/20 00:04:28
<form runat="server">を使わなければviewstate撲滅できるよ
使えるコントロールが限られるけど
317:nobodyさん
09/05/20 00:25:56
>>314
falseに設定したものはviewstate反映されてないだろ?
318:nobodyさん
09/05/20 01:07:46
>>317
試してから言えよ
319:nobodyさん
09/05/20 13:35:47
>>318
falseにしたコントロールやページに関してはViewStateに反映されないよ
ただASP.NETとして必要なぶんが反映されてるだけ
320:nobodyさん
09/05/20 14:49:36
んだな
>ASP.NET によって使用されるページには、ポストバックを検出することを目的として、
>EnableViewState が false の場合でも読み込まれる非表示のビューステート フィールドが存在する場合があります。
ちゃんとMSDNにも書いてある。つまりASP.NETの仕様。
phpでも、ページからのpostであることを示すために、
hidden fieldで<input type="hidden" name="mode" value="postback">とかして、
$mode = $_POST["mode"];で受け取ってpostbackが入っていたらpostされたと認識して
初期処理したりするけど、それをViewStateを利用して実現してる。
これすら嫌ならもはやwebアプリは向いてないから止めたほうがいいと思う。
それかすべてsessionでやる。
モバイルASP.NETはこのViewStateの仕組みを一部のコントロールを除いて
ViewStateでなくてsessionでやってるよ。
321:nobodyさん
09/05/20 15:52:47
ViewStateだとドロップダウンリストの選択位置とか覚えておいてくれるから便利。
PHPとかで実装しようとすると大変だろうな
322:nobodyさん
09/05/20 16:52:27
基地外ばっかり
323:nobodyさん
09/05/20 17:51:12
>>321
大変ではないけどめんどくさいだけ
便利なのには違いない
つうか、必要でないViewStateだけ残して切ればいいじゃん
それすら嫌とか言うなら論外だろ
何かデータを保持るためのInputとかを別の形で実装してるようなもんじゃないか
324:nobodyさん
09/05/20 18:01:54
ViewState切り詰め話はTechNet辺りでもよく出てるが、
大した問題にならないから無視しろか、
サーバーコントロールは極力使わなずResponse.writeしろの、
大体この二つに分かれてる感じだな。
一時期俺も削減に躍起になってたけど、そもそもASP.NETって時点で…
と気づいてからは余りこだわらなくなったな。
325:nobodyさん
09/05/20 21:21:01
10KBのViewStateには超文句言うのに平気で数十KBの画像おきまくったりするページワロス
326:nobodyさん
09/05/21 00:42:51
画像は受信拒否できるしなぁ
ViewStateは問答無用だろ。。
327:nobodyさん
09/05/21 00:45:50
制作者からの視点で論じてたんじゃないのか?
328:nobodyさん
09/05/21 01:36:07 /8BtlCky
ViewStateこつこつ削ってどれだけ結果に違いが出るんだよ。ほぼ意味ねーだろ。こういう所に拘るPGはマジ使えねぇ。
329:nobodyさん
09/05/21 02:38:51
携帯みたいな従量課金の場合には影響があるので
気になるプログラマはいると思う
んで、ユーザ数が多いと、そういうコツコツが大事だったりするので、
なんでViewStateを完全に無くすことができないかを知りたいと思う好奇心は
プログラマに必要な資質だと思う
だけど、ViewStateの動作を詳しく把握してもいないのに
ViewStateの存在を制御できないから気持ち悪いとか、
こんなにViewStateがたくさん埋め込まれるのは理解できない
みたいなこと言ってるプログラマがいたら確かに使えない奴だと思う
330:nobodyさん
09/05/21 04:14:36
>携帯みたいな従量課金の場合には影響があるので
>気になるプログラマはいると思う
普通自動でセッションに保存されるでしょ
331:nobodyさん
09/05/21 07:40:13
例えばGoogleの検索結果なんかはそのままブックマークできるけど、
そういうのやろうとすると邪魔じゃね?viewstate。
332:nobodyさん
09/05/21 08:20:41
意味がわからん。
ViewStateに対して間違った期待をしてないか。
333:nobodyさん
09/05/21 13:12:01
ブックマークさせたいならGETだけでアクセス出来るようにしとくだけ。
ポストバックの結果をブックマークしたいなんてことしなければ。
334:nobodyさん
09/05/21 14:32:49
当たり前のことだがASP.NET使ってるんだからそれに見合う環境は用意するべきだろ
335:nobodyさん
09/05/21 14:46:42
みなさんSeasar.NETやEntlibなどのフレームワークは利用されていますか?
参考までにそのメリット・デメリットなどご意見いただけないでしょうか。
336:nobodyさん
09/05/21 14:59:13
ENTLIB大袈裟
S2.NET合わない
337:335
09/05/21 15:29:27
>>336
そうですか。
紹介している記事もちらほら見かけるし、一見便利そうだったんで
使うのが一般的なのかとおもったのですが、そうでもないんですかね。
338:nobodyさん
09/05/21 15:47:46
今何もないなら試してみるのもいいとは思うよ。
俺は使う気はないがもちろん使えることもあるだろう。
339:nobodyさん
09/05/21 15:49:01
覚えれば便利そうだねぇ
.NETに取り入れてられればいいんだけど
標準でないものを使うのは気が引ける
といいつつJQuery使ってるけどw
340:335
09/05/21 17:29:21
今の仕事はClassicASPがほとんどなんです。
その片手間で.NET学習しながら次の案件を・・・とは考えているのですが、
なかなか時代の進歩に学習が追い付かなくて悩んでたんです。
ご意見ありがとうございました。参考にいたします。
341:nobodyさん
09/05/21 18:47:50
念のために書いておくと、
ASPの片手間でASP.NETは無謀。
342:nobodyさん
09/05/21 20:31:49
>>333
Googleの検索、トップページじゃなくて検索後のページで考えれば、
動作的にはポストバックでしょ(getだけど)。
その結果をブックマークしたい、って話よ。
343:nobodyさん
09/05/21 20:56:33
>>342
何を言ってるんだ、お前は
344:nobodyさん
09/05/21 21:10:26
>>343
例えばTextBoxのサーバコントロールを設置して、
「送信」ボタンをクリックすると、自動的にPOSTでポストバックされるということを
言いたいんじゃないかと想像
345:nobodyさん
09/05/21 21:38:57
よくわからんが<form>をmethod="get"にするだけで、
ViewStateからなにやらクエリパラメータになるんだね
長いViewStateだと死にそうだけど
普通にクエリパラメータを作成して、Response.Redirectして
受け取り側では、Page.Request.QueryStringでGET内容を取得して
処理すれば手間(といってもphpとかなら当たり前の作業)だけど実現できそうだ
つーか、phpでは当たり前の実装が手間に感じるほど
PostBackは便利すぎってことだよね・・
この辺をうまく実装してくれるような仕組みってASP.NETにあったっけ?
346:nobodyさん
09/05/21 21:59:07
だからそういう香具師はASP.NET MVCを使えと (ry
347:nobodyさん
09/05/21 22:55:04
MVCの利点がイマイチよくわかんないのよね
348:nobodyさん
09/05/21 23:14:05
ポストバックとかViewStateとかASP.NET特有の概念が嫌いで
古き良きWeb開発をしたい人にはとても良い。
しかしまあ、Webアプリ開発初心者には普通のASP.NETのが簡単だろうな。
Java人なんかにはMVCはグッとくるかもな。
349:nobodyさん
09/05/21 23:17:16
>>342
クエリに検索キーがついたURLの文字列をブックマーク(記録)するだけで
ポストバックとかは関係無いと思うが。。
350:nobodyさん
09/05/23 08:52:49
だから、ブックマークする為に
ブラウザのアドレス欄に「検索キーがついたURLの文字列」が現れて欲しい訳だけど、
form runat="server" method="post"
内のサーバコントロールに(ユーザーが)検索キーを入力した場合、
クエリ文字列は現れてくれない(URLは変化しない)し、
method="get"
にすれば現れるけど、もれなくviewstateもついてくるから邪魔。
っていう話。
>>344でだいたい合ってる。
351:nobodyさん
09/05/23 09:36:30
まあそこは自前でやるなりするしかないでしょ。
ってのが最初から言われてることでしょ。
352:nobodyさん
09/05/23 09:43:31
単純な設定変更とか、そういうレベルではできないね。
何にしても便利なやり方にはトレードオフはあるわな。
ASP.NET MVCみたいの使うとか(詳しく知らんからどんな感じにできるのか分からんけど)、
こういう用途の時だけは、ポストバックされた情報をもとに
クエリやパスに直してリダイレクトして結果表示ってのが簡単かな。
>>345みたいな方法だね。
353:nobodyさん
09/05/23 13:26:19
そもそも論でポストバック結果をブックマークしたいってのはどういう状況?
354:nobodyさん
09/05/23 13:27:16
>>352
よく考えたらNameValueCollentionをメンバに持つクラスを作って、
それにAddされて内容に従って、name=value&name1=value1みたいな出力をさせて、
URL作るだけだから、そんなに面倒じゃないね
受け取り側もHttpUtility.ParseQueryStringでやれば、
URLを自動的にNameValueCollectionに入れてくれる
ひょっとしたら、もっと便利なutilityクラスがあるかもしれないけど。
355:nobodyさん
09/05/23 13:29:36
>>353
検索結果を表示させる一覧ページとかじゃない?
例えば業務なら担当が自分のページだけをブックマークしておいて、すぐに表示したいとか
356:nobodyさん
09/05/23 13:46:59 0dm/bxqY
そこそこの規模の運用でサイト分けってどうされていますか?
現在、IIS上、1つのWebアプリの中に10個程フォルダ分けして運用していますが、
これら全てをチェックアウトしてくると、1ビルドに軽く10分程かかります。
したがって、毎回開発に必要な分を取捨選択して落としてきています。
以前、別の会社が作成したサイトを見せてもらった時は、
そもそもサイトはIIS上全て別Webアプリとして管理されていました。
しかし、そのためにApp_Code配下の共有ライブラリは
それぞれのサイトごとに保持するという形を取られていました。
通常、あるべき管理体系を考えると前者はあり得ないんでしょうが、
後者の冗長管理もどうなんだと、いう感じです。
357:nobodyさん
09/05/23 16:56:23
>>355
そういう用途ならサーバ側に用意するのが普通では?
業務に関係無く、要は個人用にカスタマイズしたページだよな。。
検索結果だって毎回同じキーワードで検索する意味不明。
>>356
開発元(マイクロソフト)が発行している開発技術大全だかに
詳しく解説されてるよ。ASP.NETの応用編だったかな。
発行年月は古いが基本的なことが書かれていてためになる。
ViewStateなんかも巷の初心者向けには書かれてないことがあったりするからおすすめ。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4133日前に更新/262 KB
担当:undef