トップページphp
1001コメント429KB

【質問】ASP.NETスレ Part3【議論】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/10/09(月) 10:04:09ID:luJDzNn3
●過去ログ
Part1 - 【質問】 ASP.NETスレ 【議論】
http://pc5.2ch.net/php/kako/1040/10406/1040698263.html
【質問】ASP.NETスレ Part2【議論】
http://pc8.2ch.net/test/read.cgi/php/1111480331/
0652nobodyさん2007/05/09(水) 18:38:31ID:???
だめだね。 キャストがむちゃくちゃ。 しね>>651
0653nobodyさん2007/05/09(水) 18:43:12ID:???
>>652
うるせーはげ

よし。わかtった。
651をちょっと変更しる。

-----------default.aspx.cs-------------
protected void Page_Load(object sender, EventArgs e)
{
  ...
  xxx.yyy.trymefunc(ApplicationInstance;);
  ...
}


korede ikeru hazu
0654nobodyさん2007/05/09(水) 18:47:30ID:???
おっと、セミコロンがちょっと多すぎたぜ
06556462007/05/09(水) 18:59:51ID:???
レス本当にありがとうございます。
そちらも試してみたいと思います。
納期が厳しいので最悪のケースはDLLにグローバル変数pathを追加して
セットアクセサでa.aspx.csからpathに値をsetするような形になりそうというか
この方が楽なんですがこちらを選んだら負けのような希ガス
0656nobodyさん2007/05/09(水) 19:49:11ID:???
>>655
System.IO.Path.GetFullPath
は使えないかい?
0657nobodyさん2007/05/09(水) 21:31:20ID:???
>>646

http://www.abc.fscs.jp/2ch/default.aspx
こんなんでどう?
0658nobodyさん2007/05/09(水) 21:47:21ID:???
なんでぇ、ServerMapPathつかえるじゃん。
06596392007/05/09(水) 22:13:34ID:???
しんじまえ
0660nobodyさん2007/05/10(木) 00:21:02ID:???
>DLLではserver.Mappathは使えないですし
使えるよ。
06616462007/05/10(木) 03:06:43ID:???
まさかこんなにレスが貰えるとは。
本当に感謝です@デスマーチ中
>656
GetFullPathはwin32\system\...だったか求めているパスが返ってこなかったです。
>658,660
DLLからserver.Mappathを使う為のヒントをいただけないでしょうか?
昼間ググったりリファレンスを読んだ限りは見つけられなかったもので…
0662nobodyさん2007/05/10(木) 10:11:51ID:???
>>661
657のリンク
0663nobodyさん2007/05/10(木) 11:00:41ID:???
初心者すぎてわけのわからない現象で悩んでます。
自前のSQLサーバーでユーザー管理をすべく
http://www.microsoft.com/japan/msdn/enterprise/pag/securityguidance/paght000022.aspx
などを参考に設定をしてみました。テーブルは自動的に作成されました。

で、トップページに貼り付けたLoginコントロールではSQLサーバーに
要求が届き、名前とパスワードが正しい場合エラーメッセージは出ません。
がトップページに貼り付けたUserNameコントロールにはユーザー名が出ません。
Login状態が保持されてないみたいです。

この状態でセキュリティ設定されたディレクトリへ移動するとLoginページに
リダイレクトされてしまいます。

で、LoginページのLoginコントロールにユーザー名パスワードを入力すると
「ログインに失敗しました」と表示されますが、このときSQLサーバーには
なんの要求も来ていません。
Loginコントロールはどちらもドラッグして置いただけです。
CreateUserWizerdではユーザーの登録ができます。
何度か削除したり置き直したりしても変わりませんし、トレースしようにも
コードがないのでトレースできません。
あとはどこをチェックすべきでしょうか?
06646632007/05/10(木) 11:02:01ID:???
web.configはウィザードが設定したものですが、多少いじりました。

<roleManager enabled="true" />
<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="ConnectionString"
applicationName="ImageTracker"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
passwordFormat="Hashed" />
</providers>
</membership>
06656632007/05/10(木) 11:03:03ID:???

<authentication mode="Forms">
<forms name="AppNameCookie" slidingExpiration="true" loginUrl="Login.aspx" timeout="1440"
path="/members" cookieless="UseCookies" />
</authentication>
<authorization>
<allow users="?,*" />
<allow roles="members" />
</authorization>

セキュリティ設定されたディレクトリのweb.config
<authorization>
<allow roles="members" />
<deny users="?" />
<deny users="*" />
</authorization>

hogeは使ってないので優しく教えてください。お願いします。
0666nobodyさん2007/05/10(木) 11:08:17ID:???
>>664
先にこっちやってごらん。
msdnのサンプルはよくわからんことが多い。
http://www.atmarkit.co.jp/fdotnet/asp2review/asp2review03/asp2review03_01.html
0667nobodyさん2007/05/10(木) 11:12:58ID:???
あとここらへんとか。
http://www.atmarkit.co.jp/fdotnet/dotnettips/450aspsecurelogin1/aspsecurelogin1.html

こういう関係の仕組みは使えそうだけど、結局、自分好みや顧客の要求に応えられる
拡張ができなくて自作になることが多いので、深く知る必要はない気がするが勉強にはなるかも。
06686632007/05/10(木) 15:52:24ID:???
>>666>>667
ありがとうございました。@ITの記事は読みやすいですね。
Login.aspxをページごと削除してみたら認証はできるようになったみたいです。
イベントハンドラが壊れてたのでしょうか。
ただ、認証は成功したもののページへのリダイレクト、認証状態の継続はしていない
ようで、相変わらず目的にページに到達できません。

試しにリダイレクトのコードを直接書いてもifは通過するものの
RedirectFromLoginPageは無視されます。
エラーも出ないところを見ると飛び先の保存がされていないみたいです。
別のソリューションを新規作成して環境からチェックしてみるかないみたいです。

Protected Sub Login1_Authenticate(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.AuthenticateEventArgs) Handles Login1.Authenticate
If Membership.ValidateUser(Login1.UserName, Login1.Password) Then
FormsAuthentication.RedirectFromLoginPage(Login1.UserName, True)
End If
End Sub
0669nobodyさん2007/05/10(木) 16:20:28ID:???
>>668
アンチウィルスとか、なんたらゲートウェイとか、
ブラウザのなんちゃらとかで、クッキーとか自動的に削除したりしてない?

認証状態が継続する仕組みを考えてみればわかる希ガス。
06706632007/05/10(木) 16:42:54ID:???
考えてもわからないから聞いてるんです。
0671nobodyさん2007/05/10(木) 17:07:43ID:???
  ∧_∧
  ( ・∀・)   | | ガッ
 と    )    | |
   Y /ノ    人
    / )    <  >__∧∩
  _/し' //. V`Д´)/
 (_フ彡        /  ←>>670
06726632007/05/10(木) 18:51:51ID:???
ワロタw
>>670
は別人です。まぁ、言っていることはほぼ正しかったと言ってもいいわけですが。

で、結論ですが、トップページで認証するけど認証状態が維持できないのは
<forms name="AppNameCookie" slidingExpiration="true" loginUrl="Login.aspx" timeout="1440"
path="/members" cookieless="UseCookies" />
でパス指定してたからでした。

membersで認証してもページが表示されずloginから抜けられなかったのは
原因が不明ですが、上記 path="/members"を消したとたんに正常に動きはじめました。
パスの設定のあるディレクトリとないディレクトリで認証が継続しないとか、
そんなことのようです。
結局解決に至ったのは>>667で紹介されたとおりに別のソリューションを作って
web.configを編集しながらエラーが出る記述を発見できたおかげです。

ありがとうございました。
0673nobodyさん2007/05/10(木) 21:57:11ID:???
membersってパス内にあるわけ?
06746632007/05/10(木) 22:28:56ID:???
>>673
パス内というか、ルート直下のmembersディレクトリにセキュリティを掛けたかったんですが、
ところが、このパラメータは、HTTP cookieのパスを指定するパラメータだったようです。
つまりクライアント側のパスなんですね。orz

確か最初はルートを指定していたのですが、直感的にセキュリティを掛けるディレクトリのパスと
勘違いして記述を変更したみたいです。サンプルはルートにセキュリティを掛けていたので。

で、ルートの認証cookieと別になっちゃったのが原因だったみたいです。
理由がわかるともっともな話ですが、なんせ初心者なので・・・お騒がせいたしました。
0675nobodyさん2007/05/11(金) 01:53:23ID:???
C# で作ったDLL内のメソッド呼び出しが分かりません・・・
0676nobodyさん2007/05/11(金) 03:10:43ID:???
DLLの関数はパブリックだよな?

DLLの関数を呼び出したいプロジェクトを開いて
プロジェクトを右クリックして参照の追加でDLLを追加
.csファイルを開いてDLLのクラスのインスタンスを作成して
DLL名.インスタンス名.関数名で呼べるよ
DLL名を省略したかったらusing DLL名;を追加してやる。
0677nobodyさん2007/05/11(金) 03:17:54ID:???
間違ってるな…
インスタンス化する時に
DLL名.クラス名 nurso = new DLL名.クラス名();
呼び出す時は
nurso.関数名()だわ
0678nobodyさん2007/05/11(金) 18:50:19ID:???
WebResource.axdがキャッシュに残るのはいいんだけど
有効期限が設定されてないから、毎回転送するはめになってます。
AJAXの方のScriptResource.axdの方は何もしなくても有効期限が
1年後に設定されてるんですよね。

どなた様かちゃんと有効期限を設定する方法を知りませんか?
0679nobodyさん2007/05/11(金) 21:10:50ID:???
>>678
これかな?
Response.Cache.SetExpires (DateTime.Add(DateTime.Now, TimeSpan.FromDays(365));

http://www.microsoft.com/japan/msdn/vs05/aspnet/webresource.aspx
06806752007/05/12(土) 01:59:14ID:???
>>676-677
参照の追加さえすれば普通に呼び出しOKなんですね^^
ありがとー
0681nobodyさん2007/05/13(日) 01:02:53ID:???
>677
通常はDLL名とnamespaceが同じだからそうなるわけで、
DLL名違うnamespaceにクラスを作ることもできるかと。
0682nobodyさん2007/05/13(日) 04:32:08ID:???
スレ違いになるかもしれませんが、質問させてください。

現在、WinXP/VS2005の環境でWebシステムの構築を行っています。
その際、スプレッドシートにGrapecity社のSPREAD for .NETを利用しています。
自分は担当者ではないので、理由はよくわかりませんが、トライアル版を使用しています。

質問内容はこのSPREADに関することなのです。

フィールドに「削除ボタン」と「入力欄」を持つSPREADシートを使用し、
データベースから取得したデータを表示させ、
入力欄を利用して値の変更を行ったり、削除ボタンを押してレコードを削除するようなページがあります。

問題になっているのが、削除を行ったときの動作でして、
DataSetから指定行を削除し、そのDataSetをsessionに登録し、
onloadのタイミングでSessionから取得したDataSetを表示させているのに、
なぜか入力欄に入力した文字が行削除を行っても上に詰められません。

不思議なことに、削除を行った直後(onloadが走る前・Postbackする前)はちゃんと削除されているにもかかわらず、
onloadが走ると直前の画面がそのまま表示されているのです。

これはSPREADの仕様なのでしょうか。または、ASP.NET側で何か起きているのでしょうか。
コーディング自体にはこのような動作を行う処理は入っていません。

もし分かる方が折られましたら、ご教授願えますでしょうか。
0683nobodyさん2007/05/13(日) 09:37:27ID:???
どうせPostBack時もDBから読んでましたってオチじゃねーの?

>これはSPREADの仕様なのでしょうか。
どんな仕様だよっ
0684nobodyさん2007/05/13(日) 10:30:14ID:???
考えられる理由はセッションに格納するデータセットに削除フラグをたてただけ
むしくは>>683が言ってることか。
0685nobodyさん2007/05/13(日) 20:22:18ID:???
PostBack以外でDatabindしちゃってイベント発生しないことあるよね
これ嫌なんだけど、仕様的にはどうしようもないのかなぁ。
0686nobodyさん2007/05/13(日) 20:26:09ID:???
×PostBack以外で
○PostBackで
0687nobodyさん2007/05/13(日) 20:27:20ID:fPqdga/g
タブのようなインタフェースで自作のユーザコントロールを切り替えたいのですが
どのようにすればよいでしょうか?(下記にページイメージ)

ボタン1、ボタン2 <領域を切り替えるためのボタン
−−−−−−|
|  領域 | <ボタンを押したら切り替えるための領域
−−−−−−|

領域にMultiViewを使って、その中にViewを宣言し、
動的にコントロールを追加するようにしてもうまくいきませんでした。
コード例:
protected void Button1_Click(object sender, EventArgs e){
 MyUserControl c = new MyUserControl();
 View1.Controls.Add(c);
 MultiView1.ActiveViewIndex = 0;
}

その他にも領域にPlaceHolderを使用してみたりしてもうまくいきませんでした。
コード例:
protected void Button1_Click(object sender, EventArgs e){
 MyUserControl c = new MyUserControl();
 PlaceHolder1.Controls.Add(c);
}

このように、領域に対してのみ部分更新をしたいのですが(初期化時にロードしたくない)
サーバコントロールを動的にロードするには何を使用するのが適当なのでしょうか?
0688nobodyさん2007/05/13(日) 20:39:33ID:???
なんでコントロールを動的に生成する必要があるの?
06896872007/05/13(日) 21:02:49ID:???
一つには領域にロードするコンテンツが多いです。
最初にページをロードするときに通信量を少なくしたいです。
また、切り替えのバリエーションを途中で増やすことなどを考えています。
0690nobodyさん2007/05/13(日) 21:10:30ID:???
>>689
情報量という観点からみると、仮にpanel上にコントロールを配置して、
そのpanelのvisibleをfalseにすると、そのpanel上に配置されたコントロールは
htmlとして描画されない=そのコントロールの通信量はゼロとなるけど、
それでは不十分?
0691nobodyさん2007/05/13(日) 22:25:46ID:???
レスありがとうございます。
レスポンスを確認したところ、MultiView/Panelともにご指摘のとおり情報量の観点では問題ないようです。

動的に生成するという観点では
MultiView/Panelなどを使った場合、
ウェブデザイナ上で追加しておかなければ表示できないものなのでしょうか?
タブを動的に追加したいです。
(余談ですが、WindowsプログラミングでよくControlを動的に生成していたので、なぜできないのかが直感的にはわからなかった。)

このような疑問を持った背景は
タブの内部だけちらつきなく、部分的に更新したいと思っていて
タブ内領域を一つのサーバコントロールで作成し、
Ajax.NETか何かでサーバコントロールを切り替える方法でもあるのかなと思って「動的」という発想になっています。
(Ajax.NETとか調べ始めたばかりでよくわかっていないのですが・・)
0692nobodyさん2007/05/13(日) 23:38:26ID:???
返答ありがとうございます。

レコード削除処理では、削除フラグは用いずDataSetのRemoveを行ってます。
また、DBからの取得も最初に画面が表示されたときのみになっているため、
再度DataBindをしているとは考えにくいです・・。

少し説明ベタなので、伝わりにくいかもしれないですが、実際の処理の流れを簡潔にかいて見ます。

1.画面を表示。SessionがないためDBからデータを取得。DataSetをSessionに登録し、Session情報をSPREADに表示。Ajax利用。
2.入力欄にデータを入力。セルを移動するタイミングでSPREADの情報をSessionに登録。
3.削除ボタンクリック。SPREADの入力欄を一度消去。ここまではJavaScript。
4.SessionからDataSetを取得し、指定行をRemove。指定行を削除したDataSetをSessionに登録。Ajaxで処理。
5.autoPostBackで画面を再表示。SessionがあるためSessionからDataSetを取得、SPREADに表示。

とりあえず原因がわからないため、Onload時に強引にSPREADの情報を書き換えてみることで対処してみる予定です。
0693nobodyさん2007/05/14(月) 01:09:05ID:???
>>691
サーバが作成したhtmlをクライアントのブラウザが表示するという形態
であるので、基本的に視覚の状態がいろいろ変化する可能性のある
VisialComponentってのはwebアプリは苦手。

そしてasp.netはpostback以前とpostback後のインスタンスは別々で、
それぞれのaspxの内部のあるオブジェクトはまったく別物であるので、
更新された状態を継続して維持し続けることが難しい。
(↑これをある程度わかりやすく可能にしたのがViewState)

なので、タブを切り替えるというイメージなら、webアプリなら、
それだけでも別ページにしてもいいぐらいな感じだと思う。

そしてこんとロールについては、自分なら、ある程度、固定された
表示パターンしかなければ、Panel等に配置しておいてPanelのvisibleの
オンオフで対応すると思う。
0694nobodyさん2007/05/14(月) 01:19:32ID:???
>>692
>5.autoPostBackで画面を再表示。SessionがあるためSessionからDataSetを取得、SPREADに表示。
ポストバック時にセッションに保存したDataSetをSPREADとやらにDataBindしてるんでしょ?
なんで表示時にしかDataBindしかしてないって言い切れてるのかよくわからん。

まぁSPREADとやらが何だかわかんないけど。
0695nobodyさん2007/05/14(月) 02:40:59ID:???
>>692
postback時にFpSpreadのSaveChangesメソッドを実行してる?
0696nobodyさん2007/05/14(月) 09:10:54ID:e3vnemfr
>>695
いえ、そのようなメソッドはコールしていないです・・・。
するべきなのですか?
0697nobodyさん2007/05/14(月) 12:17:44ID:???
連レス失礼します。

SaveChangesメソッドをPostBack時にコールすると、期待した動作をしてくれました。
お騒がせしてすいませんでした。
0698nobodyさん2007/05/14(月) 12:21:04ID:GE+YMe54
AjaxControlToolkitについて質問です。
AjaxControlToolkitを勉強していて、SampleWebSiteを触っているのですが
各AjaxControlToolkitを使っているaspxをみると中で定義されているScriptManagerが
ことごとくコントロールの作成エラーとなってしまいます。
(コンパイルして動かすことはできるのですが・・)
各AjaxControlToolkitのサンプルページ内でエラーを出さずにする方法はどのようにすればよいのでしょうか?

試したこと
各コントロールAnimation.aspxなどを開いてソースを見るとasp:ScriptManagerが解決できてないように見えます。
Web.configを確認したところタグプレフィックスなどの設定は問題がなく、
新しくWebフォームを追加してその中ではasp:ScriptManagerタグを使うことはできました。

(MasterPage内で使うとWeb.configがうまく動かないとか制約でもあるのでしょうか・・)
0699nobodyさん2007/05/14(月) 15:34:14ID:???
GridView内のコントロールについて質問です。

GridView内のTemplateFieldにDropDownListを配置したのですが、
ページを読込む際に値を読込んでくれません。
GridViewの外にもDropDownListはあるのですが、それはちゃんと見れます。
出来ればそれと同じ項目をGridView内のDropDownListにも反映させたいのですが、
どうすればいいでしょうか?
07006872007/05/14(月) 16:17:07ID:???
だれか俺のアナルに指をいれてくだし
0701nobodyさん2007/05/14(月) 16:30:03ID:uOuXEmoB
URLクエリを参照しようとして、パラメーターが存在しなかった場合中身はNULLに
なりますか?

たとえば、
Request["Test"];と参照した場合に"Test"が存在しなかったらRequest["Test"];は
NULLを表すのでしょうか。
0702nobodyさん2007/05/14(月) 16:37:41ID:???
>>701
自己解決しました。
0703nobodyさん2007/05/14(月) 16:39:35ID:uOuXEmoB
>>702
0704nobodyさん2007/05/14(月) 16:43:53ID:???
試してから書けよっw
07056972007/05/14(月) 17:02:35ID:???
すいません自己解決しました。
0706nobodyさん2007/05/14(月) 17:22:38ID:???
試してから書けよっw

あれ?
0707nobodyさん2007/05/14(月) 21:44:56ID:???
>698
確かMasterPageにScriptManagerを配置した場合は、そのMasterPageを使用したaspxでは
ScriptManagerProxyを使わないといけないはず。
07087072007/05/14(月) 21:48:07ID:???
ああSampleWebSiteってあるから自分で作成したページじゃないのかな。
じゃー関係ないかも。
0709nobodyさん2007/05/15(火) 01:51:25ID:???
>>700
だからタブごとに別ページにしなさい。
んで、動的に生成するコントロールはコントロールのvisibleのtrue,falseで対応しなさい。
0710nobodyさん2007/05/15(火) 11:02:56ID:???
>>709
おまえの指うんこくせえぞ
0711nobodyさん2007/05/17(木) 02:26:12ID:???
webページのボタン押下時に、別のWAN内のサーバの共有ディレクトリからファイル読み込んで
その結果を表示したいが、可能かな?クライアントは2000くらいなんだけど
0712nobodyさん2007/05/17(木) 03:20:30ID:???
アクセス権さえ設定してればいけるんじゃね?と確かめもせず
レスしてみる
0713nobodyさん2007/05/17(木) 07:26:12ID:FTfyfp31
自作したサーバコントロールのタグプレフィックスの定義に関する質問です。

Webサイトプロジェクト内にサーバコントロールを定義して、同一プロジェクト内で使用する場合
毎回タグプレフィックスが定義されるのが面倒なのでweb.configにタグプレフィックスを定義したいです。
<@Register ...
<cc1:MyUserControl>
<cc2:MyUserControl2>
と自動的に宣言されるのが汚い。

web.config内にサーバコントロールのタグプレフィックスを定義する場合
assembty属性とnamespace属性とtagPrefix属性を指定するようなのですが (<page><control>要素の配下に)
Webサイト内のApp_Codeで定義しているため、assembly属性に何を入れてよいのかわかりませんでした。
どのように定義すればよいのでしょうか?
assembtyを""にしてもダメでした。

もしかして、別プロジェクトにしないとダメなのでしょうか?
0714nobodyさん2007/05/22(火) 11:28:30ID:???
>>710
すみません、自己開穴しました。









アッ-!
0715nobodyさん2007/05/22(火) 13:05:49ID:x4pNUm3u
ASP.NET2.0でWebサイト作ってます。
App_Codeディレクトリの参照設定について質問があります。
web.configに以下のようなApp_Code内へサブディレクトリを使用する旨の
記述をしているのですが、imports指定しても、「定義されていません」
とか、言われたりするのです。(それもクラスファイルによってできたり
できなかったりする) アクセス就職し云々でなく、基本的にファイルがない
ということになっているようなのですが、同様の現象にあったことがあるかたは
おられますでしょうか? 昨日から原因不明でビルドできず我慢の限界に達しました。

サブディレクトリ名とnamespaceは一致させる必要はありませんよね??



<codeSubDirectories>
<add directoryName="utils"/>
<add directoryName="database"/>
<add directoryName="auth"/>
<add directoryName="information"/>
<add directoryName="consts"/>
</codeSubDirectories>
07167152007/05/23(水) 08:17:38ID:???
自己解決しました。
0717nobodyさん2007/05/29(火) 03:07:54ID:???
(; ^ω^)
0718nobodyさん2007/05/29(火) 10:24:53ID:???
テキストボックスとボタンを適当に置き、
テキストボックスにタグ(またはタグの1部、?)等を入力してボタンを押すと、

System.Web.HttpRequestValidationException:
危険な可能性のある Request.Form 値がクライアント (TextBox1="<ta") から検出されました。

というページが表示されるのですが、ワケがありましてどうしても、
validateRequest=false
するわけにはいかず、具体的にどう入力するとこの警告がだされるのかを
調べなくてはならなくなったのですが、情報がみつかりません。
どなたかお力添えをお願いいたします。m(_ _)m
0719nobodyさん2007/05/29(火) 13:26:26ID:???
単純に'<'と'>'で囲まれたタグ形式のものがエラーになるんじゃなかったけ?
俺ミスリードしてる??
0720nobodyさん2007/05/29(火) 14:46:22ID:???
>>719
ありがとうございます。それが、
&# (←半角で)
とか、<>の左側
<
に+アルファベット1文字とか、
ちゃんとあるタグに限らないんです・・・
チェックリストはハードコーディングして隠されてるみたいなんです。
0721nobodyさん2007/05/29(火) 22:34:10ID:???
ちゃんとあるタグってhtmlに存在するタグってこと?
それならたぶんエラーにひっかかってるのはhtmlタグじゃなく
XMLのタグあたりじゃないか?
俺はそういうものなんだと思ってたけど…
誰か詳しい人解説きぼん
0722nobodyさん2007/05/30(水) 00:36:44ID:???
自分なら「validateRequest=false」とは無関係に
まず正常系の処理として要求を満たす入力可能な文字集合の作成を検討する。

設計者ならば要求を満たす機能を考えることが求められるし
開発者ならば要求を満たす機能を提案し説得することが求められる。
なにより共通して言えるのはエンドユーザの要求を汲み取ることが求められる。

ということでブラックリストを列挙するのではなく
ホワイトリストを作成するのが普通な気がしない?
異常系の仕様は予算に応じてピンキリでいくらでも考えられるだろうし・・・
それこそHttpRequestValidationException発生時に別ページに飛ばすだけの手抜きまで。
それでもあえて回答を考えてみると,

「"具体的にどう入力するとこの警告がだされるのか"は非公開です。」

となる。

「validateRequest=falseは出来ない」とか「調べなくいけなくなった」とか
書いてる時点でこんな回答無意味かも知れない。
0723nobodyさん2007/05/30(水) 11:20:03ID:???
postbackした後に任意の<a name>タグに位置を合わせたいんだけどどうしたら良いでしょうか?
redirectでResponce.redirect("moyasi.aspx#kani")だと初期状態に戻ってしまうしどうしていいかわかりません(><)
0724nobodyさん2007/05/30(水) 15:51:02ID:???
とりあえず自己解決。
PageのPredrenderでRegisterStartupScript使ってjavascript書きました。

もうちょっと美しい方法ありそうだけどなぁ…
0725nobodyさん2007/05/31(木) 00:12:46ID:???
.NET になってから、Response.Flush()はどういった場面で使うの?
0726nobodyさん2007/06/05(火) 11:47:32ID:5EDNjM+0
質問です。
環境:VS2005、C#+SQL2005

複数人が更新するWebアプリで楽観的ロックを使用してDBにレコードをインサートする際
あるカラムA(IDのような一意のint型のカラム)に重複した値が入るのを避けるにはどうすれば良いのでしょうか?

SQL権限の関係で主キーは設定出来ずSQLで自動で値をふる機能も使えません。
現状は
@DBからカラムAの最大値を取得して1を足す
A@で取得した値をインサート文のvalueに入れてインサート文を実行
という流れを一つのトランザクションで行っていますが、複数の端末から同時に上記@Aの処理が
実行された時、カラムAの値が重複する場合があります。

解決策として
1)@の開始直前からインサートが終わるまでテーブルをロック
2)@の処理で取得した値を変数に入れておきインサート実行の直前に重複のチェック
の二つを考えているのですがどちらも決めてに欠けています…
1)はパフォーマンスの低下は確実、2)は根本的解決になっていない。
これ以外の重複を避ける方法というのはないでしょうか?
それとも重複を諦めるかパフォーマンスを諦めるかの二択になるんでしょうか?
0727nobodyさん2007/06/05(火) 19:04:57ID:???
>726
unique制約もだめなん?

別トランザクションでユニーク値を管理するテーブルを用意して
そっちから値を引っ張ってくるってのはだめ?
(うちの周りでは自動採番テーブルとか呼ぶね)
0728nobodyさん2007/06/05(火) 22:31:06ID:???
>>726

ACCESS_LOG
[LOG_ID] int NOT NULL,
[LOG_DATE] datetime NOT NULL,
[IP_ADDRESS] nvarchar(50) NOT NULL,
[USER_AGENT] nvarchar(100) NOT NULL

って感じのレコードとして

INSERT INTO ACCESS_LOG
SELECT MAX(LOG_ID) + 1, GetDate(), '127.0.0.1', 'FireFox'
FROM ACCESS_LOG

とかじゃだめなん?

ちゃんとうまくいくかはWCATとかでストレステストとかしてみてね。
0729nobodyさん2007/06/06(水) 11:34:51ID:???
Webアプリを配置したら、エラーが出ました。
App_Code
に配置したソースコードで
Compiler Error Message: BC30560: 'RegExUrlMappingBaseModule' is ambiguous in the namespace 'RegExUrlMapping_HTTPModule'.
というエラーです。名前空間があいまいということらしいですが・・・・公開環境ではUS版の2003server web を使ってます。

ベースクラス

Namespace RegExUrlMapping_HTTPModule

Public Class RegExUrlMappingBaseModule

Implements System.Web.IHttpModule

/////
継承クラス

Namespace RegExUrlMapping_HTTPModule

Public Class RegExUrlMappingModule

Inherits RegExUrlMappingBaseModule

RegExUrlMapping_HTTPModule.RegExUrlMappingBaseModule
と、装飾して宣言してもまったく同じエラーが出ました。

web.configは開発環境からコピーしたものを使ってます。
machine.configが違うのでしょうか?

ヒントだけでもお願いします。
07307292007/06/06(水) 11:39:34ID:???
あ、ソースはこれです。
http://pietschsoft.com/Blog/Post.aspx?PostID=762
URL書き換えを正規表現できるってことでトライしてますがいろいろつまづいて
以前にもここで質問してます・・・おかげさまで開発環境ではちゃんと動くようになったのですが。。。
すみません。よろしくお願いします。
07317292007/06/06(水) 14:33:45ID:???
事故解決。
どうにも次々に問題が発生するので思い切って削除しました。
0732nobodyさん2007/06/06(水) 19:41:27ID:bb3nk3cA
ご意見聞かせて下さい。
環境VS2005、VB

ブラウザの左側にtreeviewを使用したメニュー、右側の領域にコンテンツ
というページ構成を実現させたいのですが、

メニューをクリックした時に、右のメニューを描画せずに左側の領域だけ
画面を切り替えるのは実現可能でしょうか?

MasterPageを使用していますが、メニューも描画されてしまいます。

フレームは使用しない方向で。
07337072007/06/06(水) 21:28:38ID:???
>732
Flashを使う。
07347072007/06/06(水) 21:46:17ID:???
あ、TreeViewを使うのか。じゃあフレームを使う以外には無いよ。
Webアプリとはそういうものです。
0735どとねと2007/06/06(水) 22:40:48ID:WXe4cmTf
質問です。MSのホームページを見るとASP.netを動かす為の
用件として

・WindowsXP(Professional)
・IIS

が必須条件らしいのですが、私のマシンはWindowsXP(Home)にも
関わらず、VS2005をインストールしたところIISがインストールさ
れていないにも関わらずDebug実行する事が出来ます。

そしてファーストサーバにアップロードしたところ通常通り
プログラム(C#)を動かす事が出来ています。

以上を踏まえるとVS2005をインストールすればWindowsXP(Home)
でもASP.net開発はする事が出来るという事で良いのでしょうか?
0736どとねと2007/06/06(水) 22:49:18ID:WXe4cmTf
あと、一つ質問があります。

上記にあげた私の環境でもプログラミングをした上で
ファーストサーバにアップロードして動作させる事が出来た
のですが、DBと連動させたシステムを作りたいと思って
います。

そこで、ローカルで開発をする際にはDBにAccessを使用して
ASP.netシステムを開発し、外部にASP.netシステムを
(ファーストサーバを利用して)公開する際には、
DB接続文字列(SQL Server用に)さへ変えてしまえば、
Accessで開発したASP.netシステムをファーストサーバ上で
動かす事は出来るのでしょうか?

0737nobodyさん2007/06/06(水) 22:59:24ID:???
>>732
まずメニューをどっちに置きたいのかはっきりしてもらおうか
0738nobodyさん2007/06/06(水) 23:01:19ID:???
微妙なSQLの構文の違いとかパラメータクエリの扱いの違いとか食らう可能性があることを思うと
最初からSQLServerで作った方がいいと思うよ。
0739nobodyさん2007/06/06(水) 23:01:24ID:???
>>736
素直にSQL Server Express Editionでやっとけ。
0740nobodyさん2007/06/06(水) 23:02:49ID:???
VS2005入れると開発Webサーバが入るからそれが動いてる。
多少違いはあるが、まあ普通に開発する分にはまずまず問題ない。
0741どとねと2007/06/06(水) 23:11:29ID:WXe4cmTf
>>738
本当は、私もSQL ServerでやりたいのですがHomeEditionなので
インストール自体が出来ないのでAccessを使っています。。。

>>739
もしかしてHomeにもインストールする事が出来るのですか?
ちょとぐぐって調べてみます。



>>740
ありがとうございます。疑問が解決しました。
0742どとねと2007/06/06(水) 23:14:52ID:WXe4cmTf
どうやら、Windows 2000 Sererが必要な様ですね。。。
何とか自宅でASP.netシステムを構築出来る環境を
整えたいのですが無理でしょうか。
0743nobodyさん2007/06/06(水) 23:15:47ID:???
っつかVS入れたらSSEEも入ってるだろ、あえてはずさない限り。
0744nobodyさん2007/06/06(水) 23:17:19ID:???
ttp://www.microsoft.com/japan/sql/editions/express/sysreqs.mspx
よくみろ
0745どとねと2007/06/06(水) 23:24:48ID:WXe4cmTf
>>743
申し訳ありませんが、SSEEとは何の略でしょうか?
ぐぐってみたら
「Ship's Signals Exploitation Equipment (SSEE) 」
がトップに出てました。SQL Server関係だとは思うのですが。
もっと色々とのぞいてみます。

>>744
WindowsXP(Home)SP2も大丈夫みたいですね^^;
即効インストールしてみます。 
0746nobodyさん2007/06/06(水) 23:27:43ID:???
sqlサーバーexpressエディションの頭文字でSSEE
0747nobodyさん2007/06/06(水) 23:31:29ID:???
>申し訳ありませんが、SSEEとは何の略でしょうか?
悪かったよ。
SQL Server Express Edition の話してたからまあ分かると思ったんだ。
で、さっきも書いたがVS2005と一緒に入るはずだから、あえて外してなかったら
すでに入ってると思うぞ。
0748nobodyさん2007/06/06(水) 23:33:11ID:???
FormViewのなかの、radiobuttomListの値が取得できないんだが、なんとかなりませんか

(コントロール).row.FindControl("ラディオボタン")で出来ません

よろよろ
0749どとねと2007/06/06(水) 23:46:01ID:WXe4cmTf
>>746,747
プログラムの追加と削除を除いてみたところ
Microsoft SQL Server 2005
`` Mobile[ENU]Developer Tools
`` Native Client
`` Setup Support Files(English)
`` VSS Writer
は入っていたのですがSSEEはどうやら入っていない様です。
ダウンロードしてインストールを行う事にします。
0750nobodyさん2007/06/07(木) 00:37:23ID:???
アプリケーションのルートのURL(wwwrootまで)を取得したいのですが
なにか方法はありませんか?
0751nobodyさん2007/06/07(木) 01:47:06ID:???
意味が分かりません><
■ このスレッドは過去ログ倉庫に格納されています