<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>ASP.NET</title><link>http://blogs.wankuma.com/carbonara/category/608.aspx</link><description>直訳すると“エジプトコブラ通信網”エジプトコブラはクレオパトラが自殺したときに使った毒蛇だそうな。</description><managingEditor>刈歩 菜良 CTP</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>刈歩 菜良</dc:creator><title>Windows Server 2008のサーバーコア上IISではASP.NETは動きまへん</title><link>http://blogs.wankuma.com/carbonara/archive/2007/06/29/82887.aspx</link><pubDate>Fri, 29 Jun 2007 13:01:00 GMT</pubDate><guid>http://blogs.wankuma.com/carbonara/archive/2007/06/29/82887.aspx</guid><wfw:comment>http://blogs.wankuma.com/carbonara/comments/82887.aspx</wfw:comment><comments>http://blogs.wankuma.com/carbonara/archive/2007/06/29/82887.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/carbonara/comments/commentRss/82887.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/carbonara/services/trackbacks/82887.aspx</trackback:ping><description>&lt;P&gt;ネタ元「&lt;A href="http://itpro.nikkeibp.co.jp/article/NEWS/20070628/276227/"&gt;マイクロソフト，サーバーコア上でIISが使用できるWindows Server 2008評価版を公開&lt;/A&gt;」&lt;/P&gt;
&lt;P&gt;えぇーーーーーーーー。&lt;/P&gt;
&lt;P&gt;CE とかに .NET Framework のるのに、なぢぇにWindows Server 2008のサーバーコアには.NET Frameworkのりませんのん？&lt;BR&gt;# ん？ちと、つっこみずれてる？&lt;/P&gt;
&lt;P&gt;ま、サーバーコアでない（？）IISでは使えるから良いけどさ...&lt;BR&gt;# これもずれてるような、ずれてないような。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/carbonara/aggbug/82887.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>刈歩 菜良</dc:creator><title>WebアプリからWCF使いたくても［Add Service Reference...］メニューが出てこんがなぁ。</title><link>http://blogs.wankuma.com/carbonara/archive/2007/06/15/80790.aspx</link><pubDate>Fri, 15 Jun 2007 03:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/carbonara/archive/2007/06/15/80790.aspx</guid><wfw:comment>http://blogs.wankuma.com/carbonara/comments/80790.aspx</wfw:comment><comments>http://blogs.wankuma.com/carbonara/archive/2007/06/15/80790.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/carbonara/comments/commentRss/80790.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/carbonara/services/trackbacks/80790.aspx</trackback:ping><description>&lt;P&gt;てなことは、前から気付いてたんやけどね。&lt;/P&gt;
&lt;P&gt;で、「Visual Studio 2005 は正式に .NET Framework 3.0 に対応してるわけやないから、しゃあないね。」と、あきらめて、コマンドで&lt;/P&gt;
&lt;P&gt;svcutil.exe http://どこぞのサーバー/WCFServe/Service.svc?wsdl&lt;/P&gt;
&lt;P&gt;って、やっててんけどさぁ。&lt;/P&gt;
&lt;P&gt;ひょんなことから、Web アプリでも［Add Service Reference...］メニューが出ることに気づいた。&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#006400 size=6&gt;なんと、Web アプリにApp_Codeフォルダがあると、［Webサイト］メニューに［Add Service Reference...］があるやん！&lt;BR&gt;&lt;/FONT&gt;# 右クリックには相変わらず出ーへんよ。&lt;BR&gt;わーい！やっぱWebアプリでもできるんやぁ。と、喜んだのもつかの間。実行してみると、&lt;/P&gt;
&lt;P&gt;「オブジェクト参照がオブジェクトインスタンスに設定されていません。」&lt;/P&gt;
&lt;P&gt;えーーーーーーーーー&lt;BR&gt;なぢぇ、この期に及んで NullReferenceException やねんなぁ。&lt;/P&gt;
&lt;P&gt;でも、望みを捨てきれず、ごにょごにょごにょごによ・・・&lt;BR&gt;おかげさまで、また朝までコースかよっ。&lt;/P&gt;
&lt;P&gt;はい、結局解決できまへんでした。&lt;BR&gt;(T_T)&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ffffff&gt;いやぁ、ほんと、いい加減こんな時間まで仕事するのはやめたいぞ。&lt;/FONT&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/carbonara/aggbug/80790.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>刈歩 菜良</dc:creator><title>ユーザ認証のハマりどころ</title><link>http://blogs.wankuma.com/carbonara/archive/2006/10/24/42357.aspx</link><pubDate>Tue, 24 Oct 2006 16:43:00 GMT</pubDate><guid>http://blogs.wankuma.com/carbonara/archive/2006/10/24/42357.aspx</guid><wfw:comment>http://blogs.wankuma.com/carbonara/comments/42357.aspx</wfw:comment><comments>http://blogs.wankuma.com/carbonara/archive/2006/10/24/42357.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/carbonara/comments/commentRss/42357.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/carbonara/services/trackbacks/42357.aspx</trackback:ping><description>&lt;P&gt;久々の技術ネタです。( ;^^)ヘ..&lt;BR&gt;てか、まともなんは初めて？？ （￣□￣；）！！&lt;/P&gt;
&lt;P&gt;Windows アプリケーション、Web アプリケーションにかかわらず、ユーザー認証を行いたい場合はプリンシパルを使います。いろんなパターンがありますが、ロール（グループ）の認証でよいのならば、一番単純なのがIsInRoleを使った認証。&lt;BR&gt;たとえばこないな具合。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;if (myPrincipal.IsInRole(&lt;EM&gt;属していなければいけないロール&lt;/EM&gt;))&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // 属してるから認証おつけい！&lt;BR&gt;}&lt;BR&gt;else&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;// 属してへんがな！エラー処理。&lt;BR&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;たとえば、Dev1 グループに属してへんとできへん処理ややらしたない処理がある場合はIsInRoleの引数に"Dev1"と書けば良いんやね。&lt;/P&gt;
&lt;P&gt;と、思ったら&lt;FONT size=5&gt;大間違い！！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Windows認証でグループを指定する場合は、そのグループが属するドメイン名(ローカルグループの場合はPC名)を指定せないかんのですねぇ。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;【正解】&lt;BR&gt;&lt;CODE&gt;if (myPrincipal.IsInRole("Karubo-PC\\Dev1"))&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;ほしたらば、ローカルマシンの Administrators グループに属してるかどうか確認したい場合は、&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;if (myPrincipal.IsInRole("Karubo-PC\\Administrators"))&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P dir=ltr&gt;って書けばよいわけやね。&lt;/P&gt;
&lt;P align=left&gt;と、思ったら&lt;FONT size=5&gt;超間違い！！&lt;/FONT&gt;&lt;/P&gt;
&lt;P align=center&gt;そう、ここがまさに&lt;FONT color=#ff0000 size=6&gt;ハマりどころ！！&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Administratorsをはじめ、UsersなどのOS標準のグループはビルトイングループと呼ばれてるんやけど、ビルトイングループで認証をする場合はPC名ぢゃなくってBUILTINと書かなければいかんのよねぇ。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;【正解】&lt;BR&gt;&lt;CODE&gt;if (myPrincipal.IsInRole("BUILTIN\\Administrators"))&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;ちなみにちなみに、.NET2.0からはローカルグループやビルトイングループの認証の場合は、ロール名（グループ名）だけでよくなったみたい。&lt;/P&gt;
&lt;P&gt;今回はIsInRoleでの認証を例に紹介しましたが、宣言セキュリティ（PrincipalPermission属性）や強制セキュリティ（PrincipalPermissionクラス）でロールを指定する場合もおんなじですよ。&lt;/P&gt;
&lt;P&gt;去年の夏にわたくしはここで1～2週間ハマりましたわ。だって、MSDNライブラリのIsInRoleのとこ見てもそんなことひとっことも書いてくれてへんのやもん。もち、フィードバックしときましたが...&lt;/P&gt;
&lt;P&gt;&lt;BR&gt;参考までにサンプルプログラムおば、&lt;/P&gt;
&lt;P align=center&gt;&lt;FONT size=6&gt;【サンプルコーナー】&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;【Windows アプリ編】&lt;BR&gt;・Windowsフォームのプロジェクトを作成&lt;/P&gt;
&lt;P&gt;・フォームにラベル2つとテキストボックス、ボタンをはっつける。名前はデフォルトのまんま。2つめのラベル(label2)は結果表示用なので、下のほうに大きくはっつけてください。&lt;/P&gt;
&lt;P&gt;・ボタンをダブルクリックしてイベントハンドラ作成。&lt;/P&gt;
&lt;P&gt;・コードファイルの先頭行に以下の2行を追加&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;using System.Security.Principal;&lt;BR&gt;using System.Threading;&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・コンストラクタ（public Form1()って書いてるとこね。）に以下の1行を追加&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;Thread.CurrentPrincipal = new WindowsPrincipal(WindowsIdentity.GetCurrent());&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・button1_Clickイベントハンドラに以下を追加&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;IPrincipal myPrincipal = Thread.CurrentPrincipal;&lt;BR&gt;label2.Text = textBox1.Text + "に属して";&lt;BR&gt;if (myPrincipal.IsInRole(textBox1.Text))&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label2.Text += "います。";&lt;BR&gt;}&lt;BR&gt;else&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; label2.Text += "いません。";&lt;BR&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・で、完成！後は実行して、テキストボックスにロールを入れてボタンをクリックして下さいまし。2005の人はAdministratorsと入れただけで認証が通りますが、2003以前の方だとBUILTIN\Administratorsと入れないと認証が通りませんよ。&lt;/P&gt;
&lt;P&gt;【Web アプリ編】&lt;BR&gt;・Webフォームのプロジェクトを作成。作成場所はファイルシステムでもIIS上でもかまいませんが、IIS上に作った場合はIISの設定で統合Windows認証を有効にしてください。&lt;BR&gt;（管理ツール→[インターネットインフォメーションサービス]を起動。Webアプリのフォルダで右クリック→プロパティ。[ディレクトリ セキュリティ]タブの「匿名アクセスおよび認証コントロール」のところにある［編集］ボタンをクリック。一番下の［統合Windows認証］をチェック）&lt;/P&gt;
&lt;P&gt;・フォームにテキストボックス、ボタン、ラベルをはっつける。名前はデフォルトのまんま。ラベル(Label1)は結果表示用なので、改行してはっつけてください。2005の方で面倒くさい方は以下のコードをコピーして&amp;lt;div&amp;gt;の下に貼り付けてもOK。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;ロール名を入力してください：&amp;lt;asp:TextBox ID="TextBox1" runat="server"&amp;gt;&amp;lt;/asp:TextBox&amp;gt;&lt;BR&gt;&amp;lt;asp:Button ID="Button1" runat="server" Text="ロールチェック" OnClick="Button1_Click" /&amp;gt;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;lt;asp:Label ID="Label1" runat="server"&amp;gt;&amp;lt;/asp:Label&amp;gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・ボタンをダブルクリックしてイベントハンドラ作成して以下を追加&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;Label1.Text = TextBox1.Text + "に属して";&lt;BR&gt;if (User.IsInRole(TextBox1.Text))&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Label1.Text += "います。";&lt;BR&gt;}&lt;BR&gt;else&lt;BR&gt;{&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Label1.Text += "いません。";&lt;BR&gt;}&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・Web.configがなければ新規に追加して、&lt;CODE&gt;&amp;lt;system.web&amp;gt;&lt;/CODE&gt;要素内に以下を追加。&lt;/P&gt;
&lt;BLOCKQUOTE dir=ltr&gt;
&lt;P&gt;&lt;CODE&gt;&amp;lt;identity impersonate="true"/&amp;gt;&lt;BR&gt;&amp;lt;authorization&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp; &amp;lt;deny users="?"/&amp;gt;&lt;BR&gt;&amp;lt;/authorization&amp;gt;&lt;/CODE&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;・で、完成！後は実行して、テキストボックスにロールを入れてボタンをクリックして下さいまし。2005の人はAdministratorsと入れただけで認証が通りますが、2003以前の方だとBUILTIN\Administratorsと入れないと認証が通りませんよ。&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/carbonara/aggbug/42357.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>刈歩 菜良</dc:creator><title>なぜコードビハインドするとクラスは継承関係にならなければいけないのか勝手に考えてみました</title><link>http://blogs.wankuma.com/carbonara/archive/2006/09/21/39241.aspx</link><pubDate>Thu, 21 Sep 2006 10:18:00 GMT</pubDate><guid>http://blogs.wankuma.com/carbonara/archive/2006/09/21/39241.aspx</guid><wfw:comment>http://blogs.wankuma.com/carbonara/comments/39241.aspx</wfw:comment><comments>http://blogs.wankuma.com/carbonara/archive/2006/09/21/39241.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/carbonara/comments/commentRss/39241.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/carbonara/services/trackbacks/39241.aspx</trackback:ping><description>&lt;P&gt;&lt;A href="http://blogs.wankuma.com/carbonara/archive/2006/09/20/39167.aspx"&gt;@PageディレクティブのInherits属性ってば&lt;/A&gt;の続きです。&lt;/P&gt;
&lt;P&gt;昨日お風呂でぼ～っと考えてたらなんとなく思いついた！&lt;BR&gt;もしかして、継承にしたかったのはコード側のコンストラクタとaspx側のコンストラクタ（自動生成）を分けたい＆起動順を固定したいからだったんかなぁ。&lt;/P&gt;
&lt;P&gt;今まではOnInitの中で初期化っぽいことをしていて、InitializeComponent呼び出しなんかもここに入っていたので、独自の初期化処理をコンポーネントの初期化の前にやるのか、後にやるのかなんかを選択できてたけど、これからは選択できんてことやんね。と、いうか、本来は選択できるべきではない？？&lt;/P&gt;
&lt;P&gt;そもそも自動生成されたコードが開発用のソースファイルに出てきて変更が可能な時点であやうかったんやけどね。えぇ、今まで講習中に数え切れないほどのトラブルがありましたさ。&lt;/P&gt;
&lt;P&gt;#Regionで囲まれてるところ全削除されたり、逆に他のページからコピペしたときに#Region部分も丸ごとコピーしてきたり。そんなご無体なぁ～ (/。＼）&lt;BR&gt;そんな初心者の方に内部構造教えても混乱させるだけやしね。&lt;/P&gt;
&lt;P&gt;ASP.NET 2.0になって、講義は格段にやりやすくなりましたわ。オホホホホ ヾ（@^▽^@）ノ&lt;/P&gt;
&lt;P&gt;【注】上記はかるぼの勝手な考察＆妄想なのでまったく裏が取れてません。参考の参考にもならない場合がありますのでご注意おば。&lt;BR&gt;m(._.)m &lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/carbonara/aggbug/39241.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>刈歩 菜良</dc:creator><title>@PageディレクティブのInherits属性ってば</title><link>http://blogs.wankuma.com/carbonara/archive/2006/09/20/39167.aspx</link><pubDate>Wed, 20 Sep 2006 02:00:00 GMT</pubDate><guid>http://blogs.wankuma.com/carbonara/archive/2006/09/20/39167.aspx</guid><wfw:comment>http://blogs.wankuma.com/carbonara/comments/39167.aspx</wfw:comment><comments>http://blogs.wankuma.com/carbonara/archive/2006/09/20/39167.aspx#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.wankuma.com/carbonara/comments/commentRss/39167.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/carbonara/services/trackbacks/39167.aspx</trackback:ping><description>&lt;P&gt;ふざけたご挨拶だけだとなんなので、この前受講生に指摘されて目からうろこだったネタおば...&lt;/P&gt;
&lt;P&gt;受講生：「Inherits属性って継承ですよねぇ。何で継承なんですか。」&lt;BR&gt;わたくし：「それはですね、デザイン担当のaspxファイルが... ぁ...（一瞬フリーズ）」&lt;/P&gt;
&lt;P&gt;そう、ASP.NET2.0からはパーシャルクラス採用で、もう継承なんかしてないんやねぇ。&lt;BR&gt;どうせならばInherits属性は互換性のための非推奨の属性にして、なんかもっと的確な名前の属性を作って欲しかったなぁ。PartialClass とか ClassName とか。&lt;/P&gt;
&lt;P&gt;おかげで同様の質問が出ると歴史から話さなあかんようになってしまいました。&lt;BR&gt;ヾ(&amp;gt;y&amp;lt;;)ノ&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;と、思ったら、囚人さんのご指摘の通り、実は.aspxファイルがふた手に分かれてパーシャルなのは変数宣言だけでした。&lt;BR&gt;（囚人様 感謝です_(_^_)_ ）&lt;/P&gt;
&lt;P&gt;そんな細かな話まで説明しても初心者は混乱が増すだけなので、従来どおり「.aspx が別クラスになって」っていう説明にしますです。&lt;/P&gt;
&lt;P&gt;しかし、何で全部パーシャルにしちゃわなかったんやろか？？&lt;BR&gt;?(&amp;#176;_。)?(。_&amp;#176;)?&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/carbonara/aggbug/39167.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>