トップページ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/
0562nobodyさん2007/04/15(日) 03:25:33ID:???
ノシ
確かに検索で出てくるページもVBが多いよね
お陰でVBも読むことは出来るようになってきたw
0563nobodyさん2007/04/15(日) 11:49:38ID:???
>>560
追記。
http://www.microsoft.com/japan/msdn/thisweek/300x10/phase2/webservices_winapp/vb.aspx
Public Function GetDepartments()As DsAdv
Dim ds As New DsAdv()
Dim adapter As New DsAdvTableAdapters.DepartmentTableAdapter()
adapter.Fill(ds.Department)
Return ds
End Function

やはりMS様もこれでいいと仰ってます。
DataSetのテーブルかなんかの設定で間違ってるのかなぁ?
0564nobodyさん2007/04/15(日) 12:41:58ID:???
>>560
自己レスです。解決しました。
ta.Fill(ds.UserPageURLs,パラメータ,パラメータ)
でコンパイラが通りました。
UserPageURLsがテーブル名でした。
UserPageURLsDataTableはテーブルの型を定義するプロパティだったんですね。orz
オートコンプリートに表示される候補のDataTableという名前で完全に勘違いしてしまいました。
0565nobodyさん2007/04/15(日) 13:18:08ID:???
え・・・まさかヘルプも読まないで質問・・・
0566nobodyさん2007/04/15(日) 17:11:09ID:???
>>561
俺もC#
VBも書けるけど、なぜかC#で書いてるな。
0567nobodyさん2007/04/16(月) 14:01:35ID:AFy90HQV
VS2005,C#でSQL2000から2個のテーブルをデータセットに読み込んで
そのテーブルを比較して整合性を取りたいと考えています。
テーブルの内容はAテーブルには日付フィールドと仕事の予定フィールド
Bテーブルには日付フィールドと休日の予定フィールドが入っています。
(A・Bの日付が被る事はありません)
このABテーブルをAテーブルに纏めたいのです。
Bテーブルは終業時、同様の処理をしてバックアップ代わりにします。
普通に考えてBテーブルの全てのROWの日付でAテーブルをセレクトし
てBテーブルに存在しなければROWを追加してやれば良さそうに思うのですが
頻繁に行う事が予想されるので出来るだけ不可の少ない処理で
済ませたいのですが妙案はないでしょうか?
0568nobodyさん2007/04/16(月) 18:58:56ID:5T51gVIn
漏れもVB
コード変換ソフトとかあるし
VBでもC#でも問題ないんだが
0569nobodyさん2007/04/16(月) 20:49:06ID:68o6OWMk
>>568
c#で書いたのをVBに変換するのってあるでしょうか?
0570nobodyさん2007/04/16(月) 22:40:18ID:???
>>569
C#VB 変換 でググれ
基本だろ
0571nobodyさん2007/04/16(月) 22:48:59ID:???
J#使う人って稀?
0572nobodyさん2007/04/16(月) 22:52:02ID:???
>>567
AとBの日付が絶対にかぶらないならSelectしたBをそのまま
Insertすればいいんでないの?
も負荷を小さくするならストアドをかな。

もしくはAとBをUnionしたものをビューに登録。
さらにAテーブルをRIGHT OUTER JOINして、追加したフィールドが
nullのものだけをWHEREで切り取る。
そうすればAになくてBにあるものだけが抽出できる。

つかそのままAとBをunionしたビューをそのまま使い続けて、
新しいテーブルに、そのビューの内容をコピーしたほうが
簡単な気がする。
0573nobodyさん2007/04/17(火) 19:45:43ID:OYnOoGtS
>>571
稀だろ
つか使ってる奴みたことねぇ
J#つかうならJavaのほうがいいような気がしなくもない
0574nobodyさん2007/04/17(火) 22:11:02ID:???
Visual Web Developer 2005 Express Edition って
M$のサイトからダウンロードできるのと店で売ってるのと
何が違うんでしょうか??
05753442007/04/17(火) 22:22:37ID:???
>>574
本当は期間限定での無償ダウンロードで、その名残。
違いはオリジナルのマニュアルが付くところ。
05765742007/04/17(火) 23:14:46ID:???
>>575
ありがとです。
ってことは、機能的に制限があるわけじゃないんですね。。。

(´ε`;)ウーン…VS2003使いとしては微妙だなぁ。。。
0577nobodyさん2007/04/17(火) 23:17:13ID:???
VS2003とか使いづらくて使う気になれん
特にVS2005に慣れたら尚更
05783442007/04/17(火) 23:31:00ID:???
>>576
VWDに関しては、でかいことするんでなければ、
普通に業務用にも使えると思うけどなー。
05795742007/04/17(火) 23:51:38ID:???
>>577
そうなんですよ、、VB6からの乗換えでせっかく慣れてきたのにまたかよ('A`)ノ
って感じですわorz...
M$には、中小企業で開発環境が変わることの大変さを知って欲しいですわ。。

>>578
Webの案件は初めてでVS2003で試行錯誤して、「うひゃっ!なんか出来ちゃったwwwww」
って思ったんだけど、、、、ASP.NET 2.0 ( ゚Д゚)イッテヨシ!!
また試行錯誤してみますorz......
0580nobodyさん2007/04/18(水) 06:09:51ID:+avfGZDm
VS2005でASP.NET Webサイトを含むソリューションでリファクタ機能やすべての参照の検索など使用すると
毎回aspxなどのコンパイル処理みたいなのが走って、すごい時間がかかるんですが
早くする設定などはあるのでしょうか?
0581nobodyさん2007/04/18(水) 14:11:23ID:???
>>580
リファクタやなんやらは、すべてのファイルをgrepして調べてるんだから、
すごい時間がかかるのは当たり前。
ファイルの参照設定をちゃんとやったりして可視性を見直すしかないと思う。
0582nobodyさん2007/04/18(水) 23:14:27ID:+avfGZDm
レスサンクスです。
通常のWindowsアプリケーションとかだとあんまり時間がかからなかったため
何か設定でもあるのか、自分の環境だけなのか知りたくて質問しました。
今のところ、通常のgrepのほうが断然早いのでノイズが入ってしまうのを覚悟で手動で検索しています。
0583nobodyさん2007/04/19(木) 11:10:59ID:???
DROPDOWNLISTのLISTITEMの文字列に文字参照で入ってきたとき、そのまま出ちゃうんだけど
(&#hearts;とか)ちゃんとハートマークにして表示って出来ませんか?
05843442007/04/19(木) 16:23:20ID:???
CustomWebControlを作ればいいよ
DropDownListはRenderContentsメソッド内でデータをhtmlencodeして出力しているらしい。
だからRenderContentsを↓のようにOverrideしてhtmlencodeをはずしてあげればいいはず。
public class NonHtmlEncodedDropDownList : System.Web.UI.WebControls.DropDownListを定義して
protected override void RenderContents(HtmlTextWriter output)
{
 int count = Items.Count;ListItem item;bool selected = false;
 for (int i = 0; i < count; i++)
 {
  item = Items[i];
  output.WriteBeginTag("option");
  if (item.Selected)
  {
   output.WriteAttribute("selected", "selected", false);
   selected = true;
  }
  output.WriteAttribute("value", item.Value, true);
  output.Write(">");
  string text = item.Text; ←ここで本当はhtmlencodeされているハズ
  output.Write(text);
  output.WriteEndTag("option");
  output.WriteLine();
 }
 output.Write(Text);
}
this.NonHtmlEncodedDropDownList1_1.Items.Add(new ListItem("♥", "1"))
これでハートが表示されてる。バグってたらスマソ。
0585nobodyさん2007/04/19(木) 17:04:24ID:???
>>584
ありがとう、俺VBしかわからないんだけどなんとなくわかったよ!
HtmlTextWriterがなにやってるかを探してencodeしてる部分だけ差し替えればいいんだよね?
05863442007/04/19(木) 18:02:09ID:???
>>585
HtmlTextWriterは単にタグを作成するのに利用してるだけなので、
それそのものを調べても意味がないかも。

実際の(HtmlEncodeして表示している)RenderContentsメソッドを隠蔽して
別途HtmlEncodeしない仕様のメソッドを定義して利用させるってこと。

そのためにDropDownListの継承classを作成して、RenderContentsメソッドを
overrideするメソッドを作る。

ただし、こうするとタグが自由に利用できてしまうので、
使用可能な特殊コードのみHtmlEncodeを通さないようにして、
それ以外は通常通りHtmlEncodeを通すようにしたほうがいいかもね。
0587nobodyさん2007/04/19(木) 18:41:04ID:???
>>586
丁寧にありがとう!

>そのためにDropDownListの継承classを作成して、RenderContentsメソッドを
>overrideするメソッドを作る。

これをやってみたんだけど「その型 (test.NonHtmlEncodedDropDownList)はコントロール (System.Web.UI.WebControls.DropDownList) の型と互換性がありません。」
っていわれちゃった…
この作った継承クラスで目的のDROPDOWNLISTを定義してるのが間違ってますか?
05883442007/04/19(木) 18:48:58ID:???
>>587
vb.netの言語仕様に関してはちょっとわからない。
↓を参考にしてみて挑戦してみてください。
http://www.atmarkit.co.jp/fdotnet/basics/oop04/oop04_03.html
0589nobodyさん2007/04/19(木) 19:42:43ID:???
ありがとう、がんばってみます!
0590nobodyさん2007/04/20(金) 12:16:41ID:ev1GBwjC
>>580-581
リファクタリングを早くする方法は
http://pc11.2ch.net/test/read.cgi/tech/1176646923/13
を参照のこと。

ただそれによって早くなるのは
http://pc11.2ch.net/test/read.cgi/tech/1176646923/40
という理由らしいから、使い方はお気をつけて。
0591nobodyさん2007/04/20(金) 13:04:58ID:B09CNaZo
沖縄県の方へ(命に関わる注意事項です)

沖縄県での選挙ですが、どうか民主党だけは避けてください。県民の生命に関わる可能性があります。
民主党の最大の公約は一国二制度(※)ですが、一度「一国二制度 沖縄 三千万」で検索をお願いします。
この際、民主党のHPで調べても良いです。以下の注釈↓と矛盾することは書いてないはずですから…

※一国二制度
 簡単に言えば沖縄を中国と日本の共有物にし、そこに3000万人の中国人を入植させます。
 (つまり沖縄人口の 96% を中国人にして、実質、沖縄を中国人の居住地とします。)
 さらに「自主」の名の下、沖縄で有事が起きても自衛隊は干渉できません。
 3000万人の中国人が、少数派となった130万人の日本人に何をしても、です。
 そして反日教育を受けた中国人の反日感情の強さは、ほとんどの日本人の理解を超えるものです。

今回の選挙で民主党が勝った場合、「自主」「発展」を連呼しつつ段階的に進めていくことになります。
自主と言っても、自主を認めるのが「住人の96%が中国人となった」後だということに気をつけてください。
発展と言っても、新沖縄の少数派となった「少数民族日本人」の発展ではないことに気をつけてください。
05925822007/04/21(土) 00:50:22ID:???
>>590激しくサンクス
今まで、しょうがないんでWebサイト切り離してリファクタしてました。
0593nobodyさん2007/04/22(日) 00:20:10ID:???
経験豊かな方ご教示願います。
ある事情があって先にHogeServerというconnectionStringsを使っていました。
で、ユーザー認証その他の機能を使いたくて以下のように変更しました。

<connectionStrings>
<remove name="LocalSqlServer" />
<add name="HogeServer" connectionString="以下略
</connectionStrings>

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="HogeServer"
applicationName="Hoge"
以下略

こうしたところ、ユーザーの登録や削除はASP.NET構成ツールでうまく機能しました。
ユーザー登録関連のコントロールもちゃんと動きます。
ところが、ロールの設定やプロバイダの設定でエラーがでます。
どうもmachine.configに上書きしてない"LocalSqlServer"という項目がかなり残ってるようです。
こんなとき、みなさんならどうしますか?
1.machine.configを検索して"LocalSqlServer"の項目をすべて"HogeServer"に書き換える
2.machine.configを検索して"LocalSqlServer"の項目をすべてweb.config上でRemoveして"HogeServer"に書き換える
3."HogeSerVer"を"LocalServer"に戻してコードの中の"HogeServer"をすべて書き換える

どんな影響があるのか不安でどうしたらいいかわかりません。ご意見をお願いします
05945942007/04/22(日) 10:26:39ID:g6P3Re1p

認証関連ですがお手上げなんで教えてください
Windows Server 2003 R2で,
テキストファイルで作成したC#のdefault.aspxに
http://localhsot/default.aspxのようにアクセスすると認証のダイアログが出ず,
http://127.0.0.1/default.aspxのようにアクセスすると認証のダイアゴルが出てしまいます.
認証のダイアログを出さないようにするにはどう設定したらよいのでしょうか???
IISのディレクトリセキュリティの設定では,「匿名アクセスを有効にする」と「統合Windows認証」にチェックが入っています.
ファイルのセキュリティでは,NETWORK SERVICEが読み取りと実行が可能になっています.
0595nobodyさん2007/04/22(日) 14:13:19ID:???
>594
Windows認証が効いてるんだろ?
チェック外してみろ。
0596nobodyさん2007/04/22(日) 23:29:14ID:???
Webアプリ久々に開発することになって、最近ASP.NET2.0弄り始めたが
なんだこれ・・・過去に苦労してたのがすっげー楽に実現できる。
カルチャーショックだな
0597nobodyさん2007/04/23(月) 10:11:07ID:???
デカルチャー
0598nobodyさん2007/04/23(月) 11:16:42ID:???
>>596
俺も6年ぶりぐらいにWebアプリに戻ってきたけど、かなりのカルチャーショック。

ADO.NETの仕組みとか、.NETのライブラリの基本とかが膨大すぎて覚えるのが大変。
オブジェクト指向は過去に経験しててよかったとオモタ
クラシックなaspの仕組みしってるとasp.netの裏側も見えるので損ではないとオモタ
0599nobodyさん2007/04/23(月) 22:52:53ID:SAH2Jxj+
だが逆にHTMLを自前で吐くようなperlとかつかってたころには
あっさりとできたものが、ASP.NETではできないとか
やりかたが複雑とかわかんないとかいうのがあって
むかつくこともないわけではない
0600nobodyさん2007/04/23(月) 23:15:20ID:???
ないと思うが。
0601nobodyさん2007/04/23(月) 23:34:14ID:Qv1rWHCm
ASP.NET2003での質問
複数の画面を同時に出すフレームワークについて。

あるフレームワーク処理関連を全てコピーして、
別のフレームワークを作ったら、両方とフレームワークが効かなくなってしまった。
原因が全くわからない。
一番、多い原因は何ですか?
リンク・コード内の名前直しは間違ってません。
0602nobodyさん2007/04/23(月) 23:41:44ID:???
いい加減意味不明な言葉を直せよw
0603nobodyさん2007/04/23(月) 23:44:13ID:Qv1rWHCm
すまない。
つまるところ、フレームワークをコピペして、
一つのプロジェクトの二個のフレームワークが出来ました。
そしたら、二つとも画面の合成が効かなくなってしまった。
エスパー希望
0604nobodyさん2007/04/24(火) 00:12:07ID:???
言ってることがわかんね。
0605エスパー2007/04/24(火) 01:24:00ID:???
ふむ見えた。
この問題を解決できるエスパーは現れないみたい。

残念ですた。
0606nobodyさん2007/04/24(火) 12:30:12ID:???
>>601
意味不明だが、なんかが重複定義されてるんじゃね?
0607nobodyさん2007/04/24(火) 16:19:21ID:???
あるフレームワーク処理関連を全てコピーして、
別のフレームワークを作ったことが原因では?
これが一番多い原因だと思う。
0608nobodyさん2007/04/24(火) 19:00:49ID:???
単品フレームワークでの動作は完璧?
だったらもう一度ソースの中の名前をスミズミまで見てみれ
意外な所に自動生成された名前があったり必要な宣言がされてなかったり…
0609nobodyさん2007/04/24(火) 19:03:45ID:???
だいたいフレームワークってなによ?
0610nobodyさん2007/04/24(火) 22:43:33ID:???
ざんねんながら単なるフレームのことなんだなこれがw
0611nobodyさん2007/04/24(火) 23:06:20ID:???
単なるフレームかよ。シネヨ。
ディレクトリが違うから絶対パスで記述しても、そんなファイルねーだけだろ。
わざわざasp.netスレで聞くんじゃねー
0612nobodyさん2007/04/25(水) 00:27:48ID:???
フレームワークってaspxのことかな・・・と思ったが違うのか。
よくaspxをコピペするときにRegisterブロックあたりまでコピペしてしまって
コンパイルエラーの原因がわからず泣いてる奴がいるよな。
0613nobodyさん2007/04/29(日) 15:25:29ID:???
開発環境からページの実行をしたときに使うWebブラウザはどこで指定できるんでしょうか?
標準のブラウザを火狐等にしても、IEが立ち上がってきてしまいます。
オプション等を全部見たのですが、環境のところにWebブラウザという項目があったものの、
それらしいところが見つけられませんでした。
0614nobodyさん2007/04/29(日) 16:31:14ID:???
ソリューションエクスプローラで.aspxファイルを右クリして出てくるメニューに
デフォで"Webページの実行"みたいな名前の項目のすぐ下に
Webブラウザを選択して表示みたいな項目があってそこで
ブラウザの変更はできた。
項目の正式名称は忘れたw
0615nobodyさん2007/04/29(日) 22:38:45ID:???
データをDBから読み込んで、DataGridで表示しています。
ソートせずに、そのまま更新ボタンおせば該当行が更新モードになります。
しかし、ソートした後に更新ボタンを押すとソート前の行が編集モードに
なってしまいます。いろんなサンプル見ましたが、このことにふれたソース
がなく、悩んでいます。どなたかご存知でしたら教えてください。
0616nobodyさん2007/04/30(月) 02:26:32ID:???
書き方悪いので訂正します。
データをDBから読み込んで、DataGridで表示しています。
ソートせずに編集ボタンおせば該当行が編集モードになります。
しかし、ソートした後に編集ボタンを押すとソート前の行が編集モードに
なってしまいます。いろんなサンプル見ましたが、このことにふれたソース
がなく、悩んでいます。どなたかご存知でしたら教えてください。
0617nobodyさん2007/05/01(火) 06:32:36ID:???
>>614
サンクスです。
休み明けにやってみます。
0618nobodyさん2007/05/01(火) 20:11:30ID:???
>616
自己レス。
解決しましたのでこの質問はなし。

0619nobodyさん2007/05/04(金) 14:59:15ID:Fic8rDCB
2003 SERVER+ADSLですが先日無線ルーター(現在はLANで接続)を入れたら「localhost」ではサーバーを立てているPCから接続できなくなりました。
LAN内の別PCや自宅PCからは普通に接続できます。
そしてなぜかASP.NET自体タイムアウトで接続できない状態です。
再起動するもダメです。
何か設定が必要なのでしょぅか?
0620nobodyさん2007/05/04(金) 19:59:17ID:???
>2003 SERVER+ADSLですが先日無線ルーター(現在はLANで接続)を入れたら
どんなネットワーク構成図?
どんなネットワークではうまくいっていて、そのネットワークの何をどうしたの?

>現在はLANで接続
現在はって、昔はWAN接続?

>「localhost」ではサーバーを立てているPCから接続できなくなりました。
localhostで、何から何に接続できないの?

>LAN内の別PCや自宅PCからは普通に接続できます。
サーバと同一LAN内の別PCや自宅PCでlocalhostで接続したの?

>そしてなぜかASP.NET自体タイムアウトで接続できない状態です。
どこから接続してタイムアウトになるの?
「なぜか」だと思う理由は?
サーバのIPアドレス直入力では接続可能?
127.0.0.1ではどう?
0621nobodyさん2007/05/07(月) 00:54:06ID:???
Cookielessモードについての質問。
AutoDetectに設定すると検索ロボットからのアクセスでログが荒れる
のだけれども、UseDeviceProfileだと設定を作っていくのが面倒。
しかもプロファイルを設定してないUAでくると……

UserAgentに「Yahoo」とか「Google」の文字があったら無条件で
非Cookielessセッションに切り替える方法ってない?

現在はUseDeviceProfileを使用してMozillaを継承したbrowserファイル
でなんとか制御中。Defaultを直接継承して「yahoo」にマッチするように
設定してみたんだけど、なぜかMozillaのほうが優先されてしまう。
0622nobodyさん2007/05/07(月) 22:11:59ID:28dJTdJ9
>>600
本当にないと思ってるのか
直接Writeしないとできないことはまだ多い
0623nobodyさん2007/05/07(月) 22:15:22ID:???
直接Writeしたら少なくとも同じことはできるだろっつってんだよ。
0624nobodyさん2007/05/08(火) 02:35:36ID:???
DBからデータ読み込んで、動的にグラフを作成して表示するって可能なんでしょうか?
普通のFormならpictureboxを使用して描画できると思いますが、ASP.NETではどのような手法がありますか?
0625nobodyさん2007/05/08(火) 09:21:32ID:???
>>624
System.Drawingを使うのだよ。
サンプルは腐るほどころがっている
0626nobodyさん2007/05/08(火) 10:04:00ID:???
POSTされたXMLデータはどうやって取得するのですか?

たとえば、blogにあるwebPingを受け付けるサービスを作りたい場合、
blogからpostされたxml形式のwebPingの内容を取得する方法を教えてください。

0627nobodyさん2007/05/08(火) 11:04:40ID:???
http://pietschsoft.com/blog/post.aspx?postid=762
で、正規表現を使ったURL書き換えが紹介されていたので早速実装してみました。

書き換え規則はこんな感じです。
<add url="~/users/(.*)\.aspx" mappedUrl="~/users.aspx?u=$1"/>

URLの書き換えはうまくいったのですが、そのファイルの中に
<script type="text/javascript" src="js/swfobject.js"></script>
<link rel="stylesheet" type="text/css" href="css/RootStyle.css" />
などの外部ファイル参照があるのですがこれらがことごとく失敗します。

開発中の環境とURLが違うためにURL指定することはなるべく避けたいわけです。
そこでsrc="/js/swfobject.js"のようにルートからの絶対パスで書いたのですが
これもうまく解釈されません。

なにか上手い方法をご存知ありませんか?
06286242007/05/08(火) 11:31:36ID:???
自由に描画した画像を出力する場合に、
bitmap.Save(Response.OutputStream, ImageFormat.Jpeg);
とすると、新しいページに画像だけが表示されますが、
特定のImageコントロールに表示するには、やはり画像
ファイルを一時保存して、ImageUrlを指定しなければならないでしょうか?
0629nobodyさん2007/05/08(火) 12:15:21ID:???
>>626
xmlっても普通にstringのpostだからRequest.Formで取得できるのでは?

>>627
それじゃ、そのaspxのあるディレクトリ配下指定だよ。
HttpServerUtility.MapPathのServer.Mappthを使うと幸せになれるかも。
0630nobodyさん2007/05/08(火) 12:25:43ID:???
>>628
昔、classicなaspでやってたときは、確か、たとえば
bitmap.aspで、Response.BinaryWriteでbitmapを出力するだけのaspを作って、
<img src="bitmap.asp">とかってよくやっていたものだが、

同様にして、BitmapButtonのImageUrl="bitmap.aspx"すればだめかな?
0631nobodyさん2007/05/08(火) 13:09:10ID:???
>>630のはASP.netでもその方法は使える。

Bitmap出力するだけならashx使っても良いし、
またはdefault.aspx?mode=bitmapみたいな
urlをImageUrlに使ってクエリ文字列"mode"が"bitmap"
の時は画像を出力するというふうにしてもいいと思う。

データの受け渡しはSession変数使うのがいちばん簡単かな。
0632nobodyさん2007/05/08(火) 13:24:41ID:???
補足。
データの受け渡しってのはbitmapのことじゃない。
ページのクラスのフィールドに文字列を保存しても次のリクエスト時には消える
から、何か画像の生成に必要な一時データがあるならの話ね。
0633nobodyさん2007/05/08(火) 13:29:02ID:???
>>629
stringのpostだけど、Formの名前?がわからない。
ttp://www.nurs.or.jp/~sug/homep/rss/rss5.htm

FormのTextをSubmitするのではなく、こんな感じで送られてくるので。
0634nobodyさん2007/05/08(火) 13:41:15ID:???
>>632
DataBaseのPrimayKeyとかを渡して、そのIDの画像を表示するとかのことね。
ただSessionが消えることを考えると、文字としてaspxに埋め込まれるGETの方が
ブラウザのキャッシュに残ったときや、戻る進むで遷移したときに対処しやすい。

そもそもSessionでデータを引き渡すだけでいいなら、aspx?mode=bitmapも必要ないし。

>>633
そのaspxに対してstringなデータとしてpostされてくることは確かなわけ?

であれば、Request.FormはRequest.Form[i]のようにindexで取得できるのでキー名は不要。
もし知りたいならRequest.Form.AllKeysですべてのキー名が取得できるが、試してみた?
まずはmsdnを嫁。
0635nobodyさん2007/05/08(火) 13:50:10ID:???
>>629
そのようですね。
/を最初につけるとルートからの指定ってのがあったと思ったんですけど。
./と同じ解釈になってしまうのってなんか釈然としません。
まーDosやうにくすとは違うってことでしょう。

>HttpServerUtility.MapPathのServer.Mappthを使うと幸せになれるかも。
物理アドレスがソースに含まれてしまうみたいですね。
これは怖いです。

RequestからUrlのベースをパースするとかめんどくさいことやればなんとか
なりそうですが、書き換えルールにディレクトリを含めるのをやめるのが
一番簡単かもしれないですね。

<add url="~/users_(.*)\.aspx" mappedUrl="~/users.aspx?u=$1"/>
0636nobodyさん2007/05/08(火) 13:56:01ID:???
>>635
いやだから、物理アドレスから、IISでいうところのwwwrootまでを削れば、
IISのルートフォルダを起点とした絶対パスが取得できるのでは?
(デフォルトのIISのインスト環境)

それがいやなら、完全に手動で
../../../js/swfobject.js
のようにルートまで/../../を使ってもどって指定してやればいい。

↓参考
http://www.ipa.go.jp/security/awareness/vendor/programming/a05_02_main.html
0637nobodyさん2007/05/08(火) 14:08:39ID:???
>>634
>そのaspxに対してstringなデータとしてpostされてくることは確かなわけ?
確かなわけです。 というか、webPingの仕様がそういうものだから。
Request.Form.AllKeysは気付かなかったけれど、
Request.ContentTypeが"text/xml"であることを確認してRequest.InputStreamで全部ぶっこぬいたらうまくいきました。

たぶん。
0638nobodyさん2007/05/08(火) 14:32:11ID:???
>>636
ああ、なるほど。
IISのルートフォルダを起点とした絶対パスは
どちらも同じなんですよ。
そのルートフォルダを起点とした絶対パスを
うまく指定する方法がなくて困ってるわけです。

開発環境
localhost/js/…
localhost/css/…
公開AP
www.app.net/js/…
www.app.net/css/…

アプリケーションファイルがルートにある間は"js/…"でいいわけですが、
localhost/app.aspx?user="username"
URL書き換えによってアプリケーションファイルのフォルダが
localhost/user/username.aspx
に偽装されてしまったため、相対指定で対処きなくなったんです。

パラメータが動的に増えて階層が動的に変化する場合もあるわけで
せっかくURLの書き換え規則が正規表現で書けるようになったので
それをフルに使いたいと思ったんです。

ひょっとして"/js"などのルートからの絶対指定ができないのは、
ASP.NET開発サーバだけですか?
IISならできるとか?
0639nobodyさん2007/05/08(火) 14:51:08ID:???
>>638
そうか、その絶対パスでみれないからだめなのかorz

すまなかった。お詫びにこんなもの探してきた↓
VirtualPathUtility.MakeRelative("/design/css/main.css", "/images");
0640nobodyさん2007/05/08(火) 15:00:37ID:???
他にはここが詳しいな。
http://msdn2.microsoft.com/ja-jp/library/ms178116(VS.80).aspx
0641nobodyさん2007/05/08(火) 16:11:39ID:???
>>639>>640
そうそう。そうなんです。
これからじっくりと試してここに報告に来ますね。

まだ解決できたわけではないけれど、おかげで十分幸せになれました。
ほんとにうれしかったです。ありがとう。
0642nobodyさん2007/05/08(火) 17:06:46ID:???
>>634
それもそうだね。
?mode=bitmap&id=1&key=xxxxxみたいな感じでクエリ文字列にデータを含める方法ね。
そういう方法でするなら画像生成部分を別のaspxに分離したほうがスマートだ。

あくまでもwinのGUIに近い感じで開発したい場合、
クラスのフィールド変数を使っては値をやりとりできないため
別の方法で値のやりとりしなければいけない(Session変数など)
という注意点を書きたかっただけだから混乱させてしまったかな。
その方法は、別にSession変数でなくても>>634の方法でもいい。


用途によるけど、履歴に残したくない、表に変数内容を出したくない場合
(キーに顧客の氏名、キャプチャイメージの文字列などが含まれるなど)はやはり
URLのクエリ文字列に含めるのは好ましくない。

なおかつ表示が一時的で良いならSession変数を使うほうが良い。
まぁ複数の画像を生成する必要がある場合?mode=bitmap&img=hoge
みたいにクエリ文字列を追加しないといけないけれど。

それ以外だったら>>634の方法のほうがむしろいいかも。

追伸
Session使った場合も動作の安定性を確保するために?mode=bitmapは最低限必要。
0643nobodyさん2007/05/08(火) 20:13:20ID:???
>>642

>あくまでもwinのGUIに近い感じで開発したい場合、
なるほど。asp.netはwebの概念とWindowFormの
概念が混じってるから難しいね。

一番良いのは動的に生成したBitMapを直接、
指定できるカスタムコンポーネントを作ることだねぇ。
06446242007/05/08(火) 22:50:44ID:???
>>628
>>639
すばらしいです。ありがとうございます。
ただ、ashxで試しに折れ線を描画してJpeg画像作成してみたのですが、
折れ線がガタガタな画像が表示されました。
品質を指定すれば改善するのでしょうかね・・・。また明日試してみたいと思います
0645nobodyさん2007/05/08(火) 23:06:48ID:???
>>644
ヒント:
Graphics.SmoothingMode
0646nobodyさん2007/05/09(水) 14:53:51ID:189NeqEf
.aspxで参照設定したDLLから同一ディレクトリ内の別のサブディレクトリにある
XMLファイルのパスの取得は出来ないんでしょうか?

wwwroot
└hoge
├a.aspx
└ hoge2
└b.xml←このファイルのパス

DLLではserver.Mappathは使えないですしa.aspxから引数として
ファイルパスを渡すのも仕様上NGで絶対パスをベタ書きするのもNGです
とにかくxmlファイルの内容をa.aspxで参照しているDLLから取得出来れば良いのですが…
06476462007/05/09(水) 14:56:50ID:???
すいません、なんか質問内容がブレてますね…
したい事はxmlファイルの内容をDLLから取得です。
相対パスはその為の手段として思い付いた事っす。
0648nobodyさん2007/05/09(水) 16:08:06ID:???
>>646

-----------DLL.cs-------------

string foo = ConfigurationSettings.AppSettings["bar"];
XmlDocument myDoc = new XmlDocument();
myDoc.Load(foo);

-------------web.config--------------

<appSettings>
<add key="bar"
value="~/b.xml" />
</appSettings>

これじゃだめなの?




直接関係ないけど、変数名にhoge使う奴はしね
06496462007/05/09(水) 16:48:09ID:???
>>648
ありがとうございます。
web.configファイルの存在を忘れてました…
試してみます。
ちなみに…GW明けで修正案件4件以上入ってきたのでマジでしねそうです…
06506462007/05/09(水) 18:18:52ID:???
>648の方法を試してみたのですが
>xmlDoc.Load(foo);
の部分でファイルパスが絶対パスに変更されwin32\\system\\...のような形に
なってしまいアクセスしたいファイル意外のパスを参照してエラーがででしまいます。
むぅ…DLLのコード内でWebアプリのパスだよと指定する方法があるのでしょうか?
0651nobodyさん2007/05/09(水) 18:36:40ID:???
>>650
ありゃ。 じゃあこれはどう!?

-----------DLL.cs-------------
public void trymefunc(HttpApplication app)
{
  string foo = app.Request.MapPath("~/b.xml");

  XmlDocument myDoc = new XmlDocument();
  myDoc.Load(foo);

  ...
}

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

なんか駄目かもしれんけどさ。
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を使う為のヒントをいただけないでしょうか?
昼間ググったりリファレンスを読んだ限りは見つけられなかったもので…
■ このスレッドは過去ログ倉庫に格納されています