C#, C♯, C#相談室 Part96

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 7633-kUv4)
垢版 |
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/04/30(土) 10:04:25.38ID:QtDBeglS0
エラーの内容を精査する必要があるなら、エラーコードなりを持たせた例外スローするけど
単純な失敗成功だけ見たいならbool返すかな
2022/04/30(土) 10:32:08.49ID:Ce086BTG0
例外のコストが高いからね
2022/04/30(土) 11:13:28.89ID:UYlijuGg0
>>211
C/CPPのライブラリは0が成功って割と多い
多分210が言いたいのはCにはbool型なんて無くてintをBOOLとして扱ってるからC的には0x100000はTRUE、C#的にはbyte化されて0となりfalseになるから注意ってことを言いたいんだと思うが
2022/04/30(土) 11:14:35.66ID:UYlijuGg0
>>213
別に重くない
例えば関数の戻り値でtrue表現するためのアセンブラは
intだとmov eax, 1
boolだとmov al, 1
アセンブリコードの使用バイト数的には同じか後者の方が小さかったはず
2022/04/30(土) 11:34:36.31ID:VP7AAWWpa
>>220
ありがとう。delegateにPredicateってあるからその用途でfuncだと重いのかと思ってた
2022/04/30(土) 11:39:28.25ID:Ce086BTG0
C#がネイティブコード出力するならそうだろうなぁ
2022/04/30(土) 12:00:38.37ID:OR8SZm5l0
>>212
例えばasctime_s()とかはerror_tを返すから正常/異常(だけ)を返すわけじゃないでしょ?
0で正常って言うのは多分fclose()とかの0とEOFを返すやつぐらいかと思うよ
2022/04/30(土) 12:01:55.46ID:UYlijuGg0
>>222
確かに.NET純正だとどうだろうな
少なくともUnityのil2cpp化されたものだとmov al, 1やtest al, alだが.NETもこれ以外の手法獲る必要性があるとは思えないが
2022/04/30(土) 12:13:31.51ID:Hl+yZMpS0
>>224
最終的にはマシン語になるわけだから同じでしょ。
2022/04/30(土) 12:20:54.96ID:UbbzWFWaM
>>221
デリゲート呼び出しはそれ自体がまあまあ重いぞ
少なくとも条件分岐にboolとintどっちを使用するかなどという微々たる差を全く無視できる程度にはな
そしてデリゲート呼び出しも普通はIOに比べたら誤差だから全く無視してよい
2022/04/30(土) 12:49:03.04ID:QtDBeglS0
簡易的に確認したいなら、
https://sharplab.io/
でResultにJIT Asm選べばアセンブリコード見れるぞ
単純な型なら、Release選ぶと殆ど元の型や関数呼び出し残らないのが確認出来る
2022/04/30(土) 13:57:37.11ID:UYlijuGg0
>>225
どういうマシン語を生成するかはコンパイラの自由だから同じになるかは分からない
まあ結果ある程度同じにはなるはずだが
2022/05/09(月) 19:30:59.59ID:BZKielY90
C#/MVVMでお絵かきソフトのようなことをやる必要があります。ドラッグして長方形を書いたり、それを選択して移動したりみたいな。多分inkcanvasとか使うんですかね?
それで色々と調べているのですが、コードビハインドから除外するというのがどうも難しくて何がなんだかわかりません。ビヘイビアだのコマンドだのどうやって実装したものか途方に暮れています
以前formsで同じようなものを作ってそのときは普通に実装出来たのでコードビハインドさえ使っていいなら普通に行けるだろうにという状況です
MVVMでviewのビハインドからコードを除外するというのはもう絶対に守るべきものなのでしょうか
2022/05/09(月) 19:40:32.75ID:TPAlWSfJ0
必要なんだろ
出題者に聞けよ
2022/05/09(月) 19:41:23.37ID:YUxIU5Ky0
>>229
UIコントロールの開発者は
はなからMVVMなぞ使っとらんよ
2022/05/09(月) 20:21:28.09ID:mjdEI+Ny0
>>229
原理主義者やっても幸せにはなれないぞ
2022/05/09(月) 20:24:22.51ID:ns3gCkSAM
>>229
WPF自体がもはやほとんど使われていないため、主流と呼べるような開発手法などは存在しない
自由に使えば良い
2022/05/09(月) 21:43:08.37ID:UnFDSJiw0
MVVM原理主義から見たらかなりインチキ臭いServiceってやり方で、MやVMからControlにアクセスするやり方が一般的かな
Canvasのプロパティーを持って、そこにアクセスするためのメソッドやプロパティーが入ったServiceクラスを作って、それを例えばVMのプロパティーにする
で、Viewが初期化された時にそのクラスを生成してプロパティーのCanvasに実態を設定する
そのクラスをVMの該当プロパティーにインジェクションする
わかりにくいだろうが、どっかに上手いこと書いてある解説でも探してくれ
2022/05/10(火) 08:48:07.33ID:CCpF9W9X0
普段c++でUIコントロール作ってるような開発者が
c#版作るからってわざわざMVVMなんか使うわけないでしょーーが
2022/05/10(火) 16:27:35.44ID:A0speGA90
普段WinFormとかでUI作ってる人に聞きたいんだけど
値の変化をリアルタイムでUIに反映する場合ってどうやってんの?
値が変化する箇所全てに画面の更新処理入れる感じ?
2022/05/10(火) 17:07:52.87ID:Qwl7JHFX0
>>236
うちの場合は画面にUpdate()なりをつくって、そのメソッド内に基本的に全部のコントロールの更新処理を書いて、必要な時に呼び出してる。
DataGridViewなど必要な時にしか更新しないものは、Update(bool all)などで処理を分けて対応してるかな。
パフォーマンスに問題ない限りは、富豪的プログラミングが管理しやすいと思う。
2022/05/10(火) 17:15:20.22ID:O/q6MN3Ra
SetValueWithRefresh(newvalue)みたいな代入と更新同時にする関数作って代入はそれでやれってするとか
プロパティのsetterにonvaluechangeみたいなeventhandlerおいといてそこ経由して更新させるとか
ちまちま代入と同時に更新処理直接呼ぶとか
>>237みたいな富豪的なのもあるな
状況によりけりだよ
2022/05/10(火) 17:40:18.23ID:e+qIs2vlM
>>236
ReactiveExtensions
2022/05/10(火) 17:58:34.60ID:Bl3IG8H50
シンプルにやるなら、Timerから更新用のメソッド呼べばいいんじゃね
2022/05/10(火) 22:55:43.68ID:eH6jeiBY0
>>236
データバインディング
WinFormでも使えるんだぜ
242デフォルトの名無しさん (テテンテンテン MMe6-0R8h)
垢版 |
2022/05/13(金) 13:29:25.82ID:c/0e0c1OM
初心者です。
c#でアプリ作成したのですが、自己署名証明書がないと、アプリ起動時、発行元不明の警告が出ますよね?
みなさんどうやってその警告を回避してますか?
何かいい方法があれば教えてほしいです。
2022/05/13(金) 14:18:26.21ID:UQ7pCVsua
配布するなら正攻法は証明書取得
個人でもできる。公証人に書類つくってもらって証明機関に申請すればいい。5年ごとに8万円ぐらい
2022/05/13(金) 14:33:27.72ID:msJ+xhZt0
一番安いのはWindowsStoreで、一度だけ18か18ドルぐらい払えばよかったはず
245デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 18:46:21.48ID:TYJN2jsR0
>>243-244
情報ありがとうございます。
自己署名証明書の取得方法も色々な方法がある事を学ばせていただきました。
2022/05/13(金) 22:05:38.65ID:pmeFRqGo0
つか自己署名なら自分で勝手に作ればいいわけで...
自己署名じゃないちゃんとした証明書が必要なんだろうと
247デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 22:24:43.10ID:TYJN2jsR0
>>246
自己署名の話を皆様に聞いた理由は、他の人のPCにインストールした際に、不明な発行元と表示されてしまうのを回避したい と言う理由だけなんです。
不明な発行元と警告が出る種類も何パターンかありますよね?
フォームで出るパターン と、ブルースクリーンの様な画面で出るパターン
この両方の警告に対応するには、お金を支払い自己署名するしかないのかなあと漠然と考えてました。

その自分で作成する方法(オレオレ自己署名)も見たのですが、アプリではない感じだったので、、あまり詳しく理解できていません。。
2022/05/13(金) 22:29:59.42ID:cpvIzMAY0
「自己署名」を間違えて理解してるんじゃね?
249デフォルトの名無しさん (ワッチョイ cbba-0R8h)
垢版 |
2022/05/13(金) 22:55:59.91ID:TYJN2jsR0
>>248
もしよろしければ、自己署名についてご教示願えないでしょうか?
なかなかこの辺の記事は書籍で書いてないので。。
2022/05/13(金) 23:18:12.14ID:S8Zs+Y9A0
>>249
調べるべきは「電子署名」であって「自己署名」じゃないぞ
もっと正解に近いキーワードは「コードサイニング証明書」と「MS Authenticode」
2022/05/13(金) 23:41:37.05ID:btyzcX5fa
>>249は認識あってるよ
>>248はたぶん自己署名=オレオレ署名と勘違いしてるだけ
発行してもらった正規のでもオレオレのを使っても自己署名には変わらない

自己署名 =自分でexeに対して電子署名すること
電子署名 =電子的な署名
電子証明書=自己署名やsslなどで必要になるやつ(一般的には公的機関からのものを指すけど、自分で作ったのも含む)
オレオレ証明書 =自分で作った電子証明書
オレオレ署名 =オレオレ証明書を使った電子署名
コードサイニング証明書=電子証明書のうち、exeなどの署名に特化したもの(公的機関から買う。自分で作ったのは汎用的だからこう呼ぶことはない)
自己署名証明書 ≒コードサイニング証明書
2022/05/13(金) 23:59:49.70ID:I/jceGHeM
すごい認識だな
2022/05/14(土) 00:14:27.18ID:3IgnexNy0
>>251
ちょっとその調子で、「自己署名証明書」の定義も教えてくれ
ちなみに>>246での「自己署名」とは「自己署名証明書」の意味で書いてるわけだが

つか、
>>242も自己署名証明書はその定義だと考えてるのかな
2022/05/14(土) 00:31:05.21ID:multK6hC0
あ、オレオレ定義のアウアウウーさんだ
2022/05/14(土) 00:45:49.42ID:q1SIpySda
自己署名証明書、自己署名、電子署名っての自体はオレオレ署名とまともな署名のどっちに使っても問題ない
だから自己署名=オレオレだと決めつけて解釈していくとあらぬ方向に行くんだよ

>>246は「勝手に作る」というような言葉が使われてるからオレオレ証明書のことだと分かるし
>>242は発行元不明を防ぎたいという文脈から公的な証明書のことだと分かる
2022/05/14(土) 01:12:09.43ID:3IgnexNy0
>>255
つまりお前は自己署名証明書での署名も「まともな署名」としてあつかうんだな
2022/05/14(土) 01:17:06.48ID:YyWH0a110
>>251
アプリの発行にあたって必要なのは自己証明書じゃなくて信頼できる認証局から発行された証明書。
自分がその認証局自身でない限り自己証明書にはならない。
2022/05/14(土) 01:23:01.16ID:YyWH0a110
>自己署名 =自分でexeに対して電子署名すること

なんだこれ?こんな用法見たことない。
2022/05/14(土) 01:40:53.18ID:41BaXtRu0
>>251,255
その出鱈目どこで覚えた?
字面から想像しただけかな

https://e-words.jp/w/%E8%87%AA%E5%B7%B1%E7%BD%B2%E5%90%8D%E8%A8%BC%E6%98%8E%E6%9B%B8.html
2022/05/14(土) 10:41:44.00ID:XXC0KMFKM
>>251,255みたいなのは
相手がビギナーや若手だと見るや嬉々としてデマカセを吹き込んでほくそ笑むタイプなんでしょ
本人はやってて楽しいのかもしれないけど傍から見てるとひどく滑稽
261デフォルトの名無しさん (ワッチョイ 3133-Q+cg)
垢版 |
2022/05/14(土) 21:16:53.25ID:D+nf+blC0
C#って移植性は高いんですか?入門書をのぞいてみたけどGUIの項目ではWindows限定でした
262デフォルトの名無しさん (ワッチョイ abba-tmIb)
垢版 |
2022/05/14(土) 23:51:51.56ID:6ACM/5dE0
242 の質問者です。
僕の質問が悪かったせいで、少し雰囲気を悪くさせてしまった様で申し訳ありませんでした。

改めて質問させてください。

コードサイニング証明書の取得はどこが1番、費用が安いでしょうか?
聞くだけではダメなので、自分でもネットで調べてみました。
個人的にてはありますが、海外のECサイトで、1年で99ドルというものもありました。

ttps://blog.katsubemakito.net/articles/buy-comodo-codesigning

日本だと、1年で2万円が最安値?と認識してます。
2022/05/15(日) 00:04:11.57ID:tGTiPFBf0
それ、そんなに必要なものか?
ネットに転がってるフリーソフト使ってたらガンガン出るけど
2022/05/15(日) 00:06:57.20ID:tGTiPFBf0
そもそも海外のよくわかんねー機関に金積んで得られるものに何の信用があるのよ?
2022/05/15(日) 00:26:37.67ID:Ipi6C5sV0
WIndowsで使えるってことはMSがその認証機関を信用してるってこと
認証機関がいい加減な仕事をして信用を失うとそこのルート証明書が無効化される
2022/05/15(日) 00:57:30.11ID:ZqvBN/g40
圧倒的に安いのはMSのWindowsStore
費用は大体2000円ぐらいで生涯使えるし、一つのアカウントを使い続けるならアプリは何本でも追加費用は取られない
問題はUWP,WinUI3で作るか、WpfやWinFormsならMSIX形式のインストーラに変更することとMSの審査があるのでそれを通さないといけないこと
Windows10仕様のアイコンも作らないといけない
267デフォルトの名無しさん (ワッチョイ efd2-ydBh)
垢版 |
2022/05/15(日) 00:58:59.47ID:LE0M373c0
便乗して質問だけどこういう認証ってのは
配布するインストーラのバイナリが「改竄されていない」、「配布元が会社名 CO LTD.を名乗る権利がある」ってのを保証してくれるだけ?

保証元として信用するのはデフォルトではMicrosoft(かMicrosoftが認証してる保証会社)だけって認識だけど
2022/05/15(日) 01:38:10.49ID:Ipi6C5sV0
>>267
「配布元が会社名 CO LTD.を名乗る権利がある」じゃなくて「アプリの配布元(がなりすましされていないこと)」の保証だね

個人でも取得できるコードサイニング証明書は無条件にはMSに信用されてなくて最初の内はSmartScreenが表示される(らしい)
法人しか取得できないEVコードサイニング証明書なら最初からSmartScreenは表示されない
後者は法人の存在確認が定期的にあったりより厳密
2022/05/15(日) 01:38:43.97ID:Ipi6C5sV0
厳密じゃなくて厳格か
2022/05/15(日) 03:02:38.88ID:tGTiPFBf0
成りすまし/改ざん防止なら最近添えるのが流行りのpgpとかで十分なんじゃないの、何か悪い事が起きても俺じゃなくて他人が手を加えたせいだ、という証明にはなるから自己防衛には十分だろ

逆に言えば何かあったら言い逃れできないけど、認証機関を介さないが故に個人情報とは切り離せるわけで、トンズラも可能

書き手にとってはとても都合がいい
2022/05/15(日) 10:26:11.54ID:Ipi6C5sV0
>>270
目的が変わってるぞw
元はUACやSmartScreenで発行元不明って表示されないようにしたいって話
PGPはWindowsが対応していないからそれには役に立たない
2022/05/15(日) 15:14:46.24ID:F+SXCyPNM
サイン証明って実はリソース部分書き換えてもついたままなをだよな。
2022/05/15(日) 21:35:20.30ID:9FqWYCkM0
リソースってのはCOFF的には只の特殊セグメントなんでな
更に、ユーザー定義リソースってどんなデーターでも
格納出来る形式があってだな、we留守の格納に...おや誰か来たようだ
2022/05/16(月) 06:56:14.67ID:6t2iMJ0O0
SmartScreenの警告はダウンロードしたときに
「ファイル名:Zone.Identifier」が勝手に作成されて起動時にチェックしてる
275デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/17(火) 22:43:59.32ID:U++gJ6eR0
TreeViewとかListViewの使い方が載っている本を教えてください。
2022/05/17(火) 22:55:59.31ID:vPKF91U40
>>231-234
遅くなりましたけどありがとうございました。もう時間も迫ってきたし色々と諦めてコードビハインドに書いてます。
ただそれでも色々と勝手が違って苦戦していますが……WPF難しすぎる……
2022/05/17(火) 23:41:38.48ID:C7nZqj5bM
>>275
本は無駄

検索したほうがいい
どうしても分からなかったら英語で質問
2022/05/18(水) 00:14:57.64ID:2qQDAoA/0
>>275
Windows95ユーザーインターフェイスプログラミング

ナンシークラッツ本
279デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/18(水) 21:10:13.07ID:dKdqkOyw0
>>277 >>278
ありがとうございます。

今から勉強しているので必要になりました。
週末、本屋さんに行ってきます。
2022/05/18(水) 21:31:33.31ID:diUTiqLR0
nLogは5.0からdatabase名前空間のパッケージが独立した
破壊的変更の場合はもう少しわかりやすいところに変更書いてくれよ

nlog.databaseを追加すりゃいいだけなんだけどさ
2022/05/18(水) 21:35:57.04ID:iR7wkq9I0
>>279
本屋さんにこの手の専門書はほぼないだろうなぁ
2022/05/18(水) 23:44:43.59ID:5wqn8ALkM
本には詳しい説明は書いてないのでやりたいことを検索窓に突っ込んだ方がまし

listview databinding item 幅いっぱいとかw
2022/05/19(木) 00:15:57.29ID:uGnwJzVO0
NLogお世話になってます
284デフォルトの名無しさん (ワッチョイ 27e6-hFP2)
垢版 |
2022/05/19(木) 23:10:43.67ID:VcSHhdY40
Windows95の時代にC#があったかな。
2022/05/20(金) 00:57:04.11ID:R6FV90Kc0
相談です。
ランチャーを作りたいなと思い起動時は非表示(非アクティブ)に
何かのキーを押されたら表示したいのです。
アプリが非アクティブの時でもキーボードの入力イベントを取得する方法は無いでしょうか?
2022/05/20(金) 01:34:48.57ID:eaUqMOJr0
>>285
グローバルフック
2022/05/21(土) 02:00:44.14ID:pmnVOflo0
>>286
サンクス!

WPFで作ってるんだけどグローバルフックを調べて組み込んでみました。
MainWindowをHideするとグローバルフックが効かなくなるので
MainWindowは描画をせずグローバルフックを動かして、
子WindowにWindowを描画してHide/Showするようにしたらなんとか形になりました。
こんなのでいいのかなんだかすっきりせず。
2022/05/21(土) 10:29:06.89ID:XiDxIIx00
>>287
なんでだろ?メインウィンドウからフック仕掛けてる?
Formsの頃の記憶だけど、Application.run以前にSingletonな管理クラス作ってやってた。
そいつからイベント送られてくるようにしてたよ。
それで問題なかったはずだけど、なんか変わったんのかな。
289デフォルトの名無しさん (ワッチョイ 8b01-H9jD)
垢版 |
2022/05/21(土) 14:05:38.07ID:2Lltosx/0
以前HotKeyで作ったけど中身はグローバルフックなんかな
2022/05/21(土) 15:40:41.47ID:4jCCGHc40
Utf8Parser.TryParse(span, out DateTime date, out _, 'O')について聞きたいんだけど、以下の文字列はUtf8Bytesとして
"2022-01-01T00:00:00.0000000Z" ← 28文字のこれなら正常に成功するのに
"2022-01-01T00:00:00.000000Z" ← 27文字のこっちは失敗する

DateTime.TryParseなら後者も成功するんだけどこれはUtf8Parserがポンコツってこと?
それともDateTime.TryParseがオーバー解析してくれてるだけで28文字未満の"O"形式のDateTime投げてくる方が非常識?
2022/05/21(土) 15:55:42.97ID:cfNQUnEf0
>>290
https://github.com/dotnet/runtime/blob/57bfe474518ab5b7cfe6bf7424a79ce3af9d6657/src/libraries/System.Private.CoreLib/src/System/Buffers/Text/Utf8Parser/Utf8Parser.Date.O.cs#L175
27文字目は数字以外だとエラーになるっぽいね
2022/05/21(土) 16:15:24.74ID:ec9yQBCj0
>>290
失敗しても仕様の範囲内ぽい

> ラウンドトリップ ("O"、"o") 書式指定子
> "O" または "o" 標準書式指定子は、DateTime 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" カスタム書式指定文字列と
> DateTimeOffset 値の "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffzzz" カスタム書式指定文字列に対応します。
293sage (ワッチョイ cebb-8jyA)
垢版 |
2022/05/21(土) 16:43:22.42ID:0fNBsESd0
27文字のが来る状況あるんだっけ?
2022/05/21(土) 18:38:40.30ID:hT1fnPAH0
>>288
レスありがとう!
MainWindowからフックしています。
シングルトンにはしてないですが、MainWindowは生きているので、
フック自体は破棄されていませんが、どうもダメでした・・・
2022/05/21(土) 21:45:54.24ID:8HM5gfhu0
>>285
特定のキーで表示ならSystem.Timers.Timer使ってGetKeyStateとかでキー入力監視
キーがヒットしたらタイマー止めて目的のウィンドウを表示
ずっと監視するのが嫌でなければ実装はかなり楽な方かと
アプリランチャーならタスクトレイに格納してマウスクリックで表示させての方が使いやすい気がするけど
2022/05/22(日) 01:09:06.35ID:7HW4nX7o0
RawInputでいいんじゃね
2022/05/22(日) 01:44:20.92ID:xpEgvjj30
>>285 です

>>288 さんの
>Application.run以前に
というのをヒントに、WPFなのでrun()は無いけど、Appにコンストラクタを記載しその中でフックを起動して、
キーダウンのイベント内でMainWindowを取得し制御する事で上手く行きました!
その他手法含めご教授してくださった方々有難うございます!
2022/05/22(日) 09:35:29.30ID:gmOf9ICx0
>>291-293
現状だと28文字未満だったらUtf16に変換してDateTimeの方でやるしかないか
そこそこ知られてるWebサービスのAPIがたまに桁詰められて27文字の投げてくるんだよね
2022/05/22(日) 10:21:24.48ID:GyF0oANxM
悪いけど、Webのレスポンスだったら最初から全部UTF16でやっても全くパフォーマンス変わらないと思うよ
2022/05/22(日) 11:48:59.69ID:gmOf9ICx0
>>299
そんな大きなペナルティがあるとは思ってないけど全く変わらないというのはどういう原理で?
JsonDocument.Parse(response.Content.ReadAsStream())みたいな感じでやってるけど、これだとUtf8のままパースされてるよね
2022/05/22(日) 15:34:34.14ID:Nn/6kHB8d
用途次第じゃない?
HTTPSの通信に比べればJSONのデコードなんか誤差だから単一の処理で見るなら全く意味ないだろうけど、
もし大量のリクエストを捌くサーバーを作っているならCPUやメモリの使用率を削減することでサーバーのインスタンス数を削減できるかもしれない
2022/05/22(日) 16:53:52.96ID:7HW4nX7o0
そこまでシビアなら、他にもっと先に見直す所があると思うけど
2022/05/29(日) 18:01:05.65ID:Gx8AtDBv0
WindowsFormはそれなりに少し経験はあるんですが行き詰まっているので相談です

centos7にapach上で、これまでhttpd.confにAliasで特定のドキュメントルーツを設定して
phpでつくったWebアプリをいくつか動かしている環境があり、ここに新たに
Blazorサーバやってみようと、dotnetインストールしてrunまではできてます
(配置したdllを実行するserviceをつくってそれも起動可能な状態)

phpでつくったアプリのようにAliasで簡単にできるかなと思ってたらそうでもなく
サイトググるとVirtualHostの例がちらほら

example.com/app1 ・・・ var/www/app1 にphpアプリ配置
example.com/app2 ・・・var/www/app2 にphpアプリ配置
example.com/blazor を新たに配置するにはどの辺調べればいいですかね
MSのドキュメントやBlazorや先日でたNET6の書籍とか見ながらいろいろやってはみたものの
どれもうまくいかず、行き詰まっております(方向性を見失ってます)
リクエストきたものをkestrelに渡してやらなきゃいけないってのはなんとなく理解してますが
VirtualHostとリバースプロキシをきちんと理解しないでできないですかね
2022/05/29(日) 18:02:59.94ID:Gx8AtDBv0
ドキュメントルーツ・・・ドキュメントルートです
すみません
2022/05/29(日) 19:36:38.11ID:kVtoPC2XM
IISでホストしてApache側でVirtualHostの指定でリバースプロキシすりゃいいよ
頭悪い構成だが、その調子だとリバースプロキシの設定はなんとかなってもどうせdotnetアプリを常時起動する方法が見当つかないんだろ?
2022/05/29(日) 20:08:21.68ID:DRuRn6I70
>>303
リバースプロキシ使用時はhttps使わない構成にしなきゃダメだぞ
2022/05/29(日) 20:15:46.80ID:1ETRcw7wM
>>303
すでにデーモンとして動かしてるならリバースプロキシするだけ
ググって適当にコピペでまあいける
本番だったらちゃんと理解してやったほうがいいと思うけど
2022/05/30(月) 04:15:11.38ID:JkhndRSZa
数か月ぶりでここ覗いてみたけどまだ結構人がいるみたいでちょっと安心したw

以前は旧FireFoxのChaikaってアドオンをだましだまし使ってたんだが、(それがいよいよ
使えなくなったのが来なくなった理由)今回JaneStyleを入れてみたが、作者さんを批判する訳じゃないが、
UIは25年前のWin98時代のものだし鬱陶しいエロ広告は表示されるし結構萎えるなこれ

C#といっこも関係ない話題ですまん
2022/05/30(月) 08:09:38.08ID:n9/aIkj20
みなさんレスありがとうございます

>>305
serviceつくって常時起動はできてるかなと思います
>>306 >>307
稼働WEBサーバはhttpsのみなので、ってことは今の構成でそのままっていかないんですね
(Rewriteでhttpをhttpsにしている)
ネットの設定例にある、http://localhost~; をhttpsにしていましたが

ネットで見つけられた設定例って、そのサーバの全アクセスをリバースプロキシさせるようなものがほとんどで
自ドメインの特定のアドレス(上でいう、example.com/blazor)だけを
リバースプロキシさせてdotnetが受け取れるようにってできないもんでしょうか?
できるということであれば、どうにかして調べます

バーチャルホストは複数のドメインを扱ってて、Aliasは同じドメインで複数のドキュメントルートを扱えると
考えているので、やりたいことはバーチャルホストでできないんじゃないかなと思ってるんですが
サブドメインにしちゃえば1つのドメインでもやれますかね
2022/05/30(月) 08:44:27.76ID:terzLTfjM
できるよ
2022/05/30(月) 14:27:32.28ID:rKCebS3v0
>>310
ありがとうございます

後者の方はhttpでうまくできました
ただ、実際はユーザーからhttpsでつながせたいのですが
証明書がないのでブラウザで開いても動作確認できず
メインドメインのSSL証明書だと、ワイルドカードだと割高なのでドメインを
追加するしかないかなと思うのですが、
VirtualHostの設定内に取得した証明書の設定書いてやれば
httpsで動作させることができると考えてもいいんでしょうか?
下みたいな感じで。前者の方ならそんな手間も費用もいらないんでしょうが、方法がみつからない

<VirtualHost *:443>
ServerName hoge.example.com
ProxyPreserveHost On
ProxyPass / https://localhost:5001/
ProxyPassReverse / https://localhost:5001/
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteCond %{HTTPS:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTPS:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5001/$1 [P]
2022/05/30(月) 14:30:41.80ID:rKCebS3v0
SSL部分書き忘れましたが、書き方は省略します

SSLEngine on
SSLCertificateFile [crtのパス]~~以下略
2022/05/30(月) 15:23:01.71ID:/JK2MYXZ0
俺はPHPも使えるんだぜ
すげーなおれ
2022/05/30(月) 16:31:04.22ID:rKCebS3v0
>>311はいちど撤回します

Program.csでapp.UseHttpsRedirection()が抜けてたのでそれを加えつつ
前者の方をLocationでなんとかhttpsでの表示までたどり着きましたが
どうも完全な動作をしてない様子です
(Blazorの学習用のテンプレートでメニューやテキストだけだけ羅列された状態)

<Location "/blazor">
ProxyPreserveHost On
ProxyPass http://localhost:5000/
ProxyPassReverse http://localhost:5000/
RewriteEngine on
RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
RewriteRule /(.*) ws://127.0.0.1:5000/$1 [P]
</Location>
もう一息な感じなんですが・・・
2022/05/30(月) 19:40:46.77ID:n9/aIkj20
解決しました
サーバー側でなく、ソース側の修正で表示できました
2022/06/18(土) 22:52:15.42ID:5N4YYnEs0
古い話題で恐縮なんですが質問です。
https://docs.microsoft.com/ja-jp/dotnet/standard/asynchronous-programming-patterns/calling-synchronous-methods-asynchronously#executing-a-callback-method-when-an-asynchronous-call-completes

IAsyncResult result = caller.BeginInvoke(3000,
out dummy,
new AsyncCallback(CallbackMethod),
"The call executed on thread {0}, with return value \"{1}\".");

begininvokeで呼び出されたのが終わるとき、callbackmethodが呼び出されることまではわかりました。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況