Kobarin's Development Blog

C#やASP.NET、公開APIなどについての記録です。

ASP.NET

HTTP Error 500.19 - error code:0x8007000d の解決方法

前回記事と同様、WindowsPCでIIS7.5を初起動させようとして起こる、よくあるらしい現象。 StackOverFlowの書き込みによれば、前回同様、基本的にWeb Platform Installerに起因する現象のようです。 エラーメッセージにはApplicationHost.configが原因みたい…

IIS7.0で.net framework4.0で動作させる

BugTrackerを導入しましたが、.net framework 4.0で動作するようでした。 これまで全て2.0ベースで開発してきたため、4.0は初めてでしたが、VSの開始オプションを「4.0」にすれば良いだけだと軽く考えていました。が、実際にはIIS側の設定が必要でした。症状…

ASP.NETで、Google Calendarの情報を表示

ASP.NET上でGoogle Calendarのデータを呼び出し、GridViewに表示するまでの処理を示します。 1.Google Data APIの.NET libraryをダウンロードしてインストール 以下サイトから最新の「Google_Data_API_Setup_xxx.msi」をダウンロードします(当方の時点では…

ASP.NETで、DateTimeの値をRFC822に変換

Repeaterコントロール内で変換した例です。これだけです。 ソースはここ。 How do I parse and convert DateTime’s to the RFC 822 date-time format?プログラム内で変換する場合は、 string rfc822 = myDate.ToString("r");

Microsoft Chartコントロールで「ChartImg.axd の子の要求を実行中にエラーが発生しました」のエラーに対する対策

ASP.NETでMS Chartコントロールを使用して実行しようとした際、以下の様なエラーに遭遇する事があります。2種類まとめて書いてしまいます。 ChartImg.axd の子の要求を実行中にエラーが発生しました。 説明: 現在の Web 要求を実行中に、ハンドルされていな…

ObjectDataSourceからクラスを呼び出してバインドする

Repeater等のデータリスト系コントロールから、データソースとしてObjectDataSource(以降ODS)を指定した際にクラスを呼び出す方法です。 私個人のやり方ですが、SQL文の定義を1つに集約するため、最近はSqlDataSourceやODSを個別に定義せず、クラスをObjec…

タスクマネージャーをGoogleリーダーで代替

「Googleリーダーを利用してスケジューラーにしてしまおう」という記事です。 当方の環境では、タスクマネージャーで定期的(月次、週次、日次、毎時)にスケジュールさせているコンソールアプリケーションがありますが、やり方が悪いのか、未だに結構トラブ…

URLScanのグローバルフィルターとサイトフィルター

目的 SQLインジェクション攻撃など、URLやHTTPヘッダーに不正なデータを紛らせる事による侵入や不正なアクセスに対する防衛手段の1つです。 公式サイト URLScanの設定 (ダウンロードもページ内から参照しています) 前提条件 まず前提プラットフォームが以…

ユーザーコントロールに親ページからパラメータを与えても、先にPage_Loadイベントが呼び出されてしまう対策

まず一例として(コードは至るところでカットしてます)。 以下の例では、parent.aspx のRepeaterのアイテム内から、ユーザーコントロールuc.ascxを呼び出しています。 Repeaterの各アイテムには色名を指定すると、uc.ascxで「色は○○です。」と表示する、意…

ASP.NETで、YahooローカルサーチのデータをGridViewに表示してみる

Yahooさんのローカルサーチは電話帳データ等から施設情報を抽出できる、かなり便利なAPIなのですが、ASP.NETから呼び出す例としてはあまり参考になるサイトがなかったので、ここに書いてしまいます。 仕様 電話帳データより「コンビニ」情報を取得し、GridVi…

Ajax ToolkitのTabContainerの出力コード

<div id="TabContainer1" class="mycss" style="visibility:hidden;"> <div id="TabContainer1_header"> <span id="TabContainer1_tab1_tab"> <span class="ajax__tab_outer"> <span class="ajax__tab_inner"> <span class="ajax__tab_tab" id="__tab_TabContainer1_tab1">Tab1</span> </span> </span> </span> </div></div>

ASP.NETフォームでデータ入力する際に、ヤバそうな文字を排除する正規表現

Textboxに何の検証も無しに文字列を受け付けると様々なトラブルを引き起こします。 検証コントロールの1つ、RegularExpressionValidator を使って「とりあえずこれだけは」やっておくと安心という正規表現を書きます。 ValidationExpressionに入れる文字列で…

ASP.NETでダウンロードダイアログを表示してダウンロードさせる

ブラウザ内に直接HTMLやXMLを表示するのではなく、意図的にダウンロードさせる場合、以下のコードにより可能。 protected void Page_Load(object sender, EventArgs e) { Response.AppendHeader("Content-Disposition", "attachment; filename=myfile.xml");…

DataBind系コントロール(Repeater、ListView等)中でServer.UrlEncodeする

<asp:Repeater ID="rp1" runat="server"> <ItemTemplate> <li><a href="page.aspx?name=<%# Server.UrlEncode( Eval("name").ToString() ) %>"><%# Eval("name") %></a></li> </ItemTemplate> </asp:Repeater>

System.Diagnostics.Trace.WriteLineでトレース内容が表示されない場合

Web.configのsystemタグ内に以下を書き加える。 <system.diagnostics> <trace> <listeners> <add name="WebPageTraceListener" type="System.Web.WebPageTraceListener, System.Web, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/> </listeners> </trace> </system.diagnostics> System.Diagnostics.Debug.Wri…

ASP.NETでCSV出力

protected void Page_Load(object sender, EventArgs e) { System.Text.Encoding encoding = System.Text.Encoding.GetEncoding("Shift-JIS"); Response.AddHeader("Content-Disposition", "attachment;filename=date.csv"); //ファイル名 Response.ContentT…

aspxファイル内の「~」で始まるアドレスを、クライアントで処理できるようにアドレスに変換する

「ResolveUrl(string url)」を使う事で可能。 ” rel="StyleSheet" type="text/css" /> ">HOME

ASP.NETで、サーバー上のファイルに読み書きする方法

例えば、「D:\Inetpub\tmp\users.txt」を読み書きする場合、以下のようなアクセス権限設定が必要。 権限 ユーザー アクセス権 読み込み IUSR 読み取りと実行、ファイルの内容の一覧表示、読み取り 書き込み IIS_IUSRS 読み取りと実行、ファイルの内容の一覧…

ASP.NET(C#)でTwitter OAuth(日本語対応)

OAuthとC#でマルチバイト文字を扱う http://d.hatena.ne.jp/nyanp/20100504/p1要は、OAuthBase 内に以下のコードを追加して、 protected string UrlEncode(string value, Encoding encode) { StringBuilder result = new StringBuilder(); byte[] data = enc…

ASP.NETでTwitterのOauthを使う

1. まずTwitterアプリケーションを登録 http://twitter.com/apps2. 「consumer key」と「consumer secret」を取得3. ASP.NETサイトを開く4. web.configを開き、<appSettings>に以下のように記述。「・・・」には、それぞれのキーを記入。 5. 以下ページに…

ASP.NETのプリコンパイル(により、コードを隠蔽)

コマンドプロンプトで以下のように実行すると、プリコンパイルできる。 cd %SystemRoot%\Microsoft.NET\Framework\v2.0.50727 aspnet_compiler -v PreCompile -p D:\Inetpub\wwwroot\PreCompile d:\PreCompile 解説 D:\Inetpub\wwwroot\PreCompile ASP.NET…

MS Chartをコーディングで作成

SqlDataSourceやDataTableが常に固定的であれば、前回のようにChartとデータコントロールをバインドすればよいが、 通常の業務システムであればコーディング無しで済む事は少ないだろう。 例えば、SQLのフィールド名が毎回変わるケースであったり、DataTable…

MS Chartコントロールで分かった事

ASP.NETのMS Chartコントロールは便利ですが、情報が少ない事とエラーメッセージが意味不明なのが難点です。 という事で、忘れないうちに備忘録をつけます。以下は、X軸にに日付、Y軸に売上げを示したサンプルです。 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 1…

Evalの値を切り替える

簡易版(元の値が数値限定) ' /> ・・・ ' /> コロンの後にセミコロン区切りで3つ書式を指定できる。 順番は、正数・負数・ゼロ。 以上をRepeater等に記述すると、"Field"の値によって表示を切り替えられる。 -50 ・・・ マイナスだよ 0 ・・・ ゼロだよ 25 ・・・ …

WebClientのDownloadStringは、エンコーディング必須

WebClient client = new WebClient(); string rssFeed = client.DownloadString("http://rss.rssad.jp/rss/itmtop/1.0/topstory.xml"); このように実行すると、RSSのXMLを読み込む事が出来るが、DownloadStringメソッドは標準でANSIで読み出すらしく、ほとん…

階層的なXMLをRepeaterで出力 〜其の2〜

order.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="order.aspx.cs" Inherits="order" %> <html> <head id="Head1" runat="server"> <title>Order</title> </head> <body> …</body></html>

階層的なXMLをRepeaterで出力 〜其の1〜

repeater.aspx <%@ Page Language="C#" AutoEventWireup="true" CodeFile="publishers01.aspx.cs" Inherits="api_other_publishers" %> <html xmlns="http://www.w3.org/1999/xhtml"> </html>

じゃらんAPIを使って、特定ホテルの空室を調べる(部屋情報を出力)

かなり手抜きだけど、ひとまずメモということで。後日修正版を書き直す。 protected void btnSearch_Click(object sender, EventArgs e) { const string strUrlFormat = "http://jws.jalan.net/APIAdvance/StockSearch/V1/?key={0}&h_id={1}&stay_date={2:yy…

SqlDataSourceで、手動でParameterを追加する方法

SqlCommandと同じようにコードを書いたらParameterが通っていなかった件。 「@」の要不要が違うらしい。以下、違いを書いておく。 SqlCommandの例 Command1.Parameters.Add("@param1", SqlDbType.NVarChar).Value = "ABCDEF"; SqlDataSourceの例 SqlDataSou…

SqlDataSourceを実行時に、該当件数を取得

データバインド時に該当件数を取得するケースがある。 GridViewのRows.Countを使っても、現在表示中の行数しか取得できないため、ページング等をしていると全体の件数は取得できない。 以下のようにコーディングする事で、SqlDataSourceのSelect実行時に全件…

ASP.NETで、System.Web.UI.Pageを継承しない・・・つまり別クラス内でTraceする方法

System.Diagnostics.Trace.Write("category1", "description1");

ユーザーの言語情報を取得

ユーザーの言語情報を取得する場合、以下のように記述する。 配列になっているが、優先順に並んでいるため。 Label1.Text = Request.UserLanguages[0]; 出力例 英語 日本 フランス en ja fr

コントロールのクローンを生成

ASP.NETには、コントロールのクローンを生成するメソッドがない。 以下、ソース。Sourceと同じ型のコントロールを作り出してプロパティを全てコピーするだけだが、 IDの付与のみ状況によって書き換えが必要になるケース有り。 /// /// コントロールのコピー …

ListViewでデータバインドした値を取得

protected void ListView1_ItemDataBound(object sender, ListViewItemEventArgs e) { if (e.Item.ItemType == ListViewItemType.DataItem) { if (DataBinder.Eval(((ListViewDataItem)e.Item).DataItem, "色").ToString() == "ピンク") { Label _lblColor =…

ASP.NETで、linkタグに記述した仮想パスをブラウザで認識できるようにする方法

「VirtualPathUtility.ToAbsolute」で、チルダ付きアドレスを自動変換してくれる。 " rel="Stylesheet" type="text/css" /> 追記:ResolveClientUrlの方が簡単なようです。 " rel="Stylesheet" type="text/css" />

SqlTransactionの基本コード

using (SqlConnection cn = new SqlConnection([接続文字列])) { using (SqlCommand cmd = cn.CreateCommand()) { cn.Open(); SqlTransaction tran = cn.BeginTransaction(); try { cmd.Transaction = tran; cmd.CommandText = @"insert into Table1(Field1)…

VisualStudio2008からSQLへの接続時、「この接続用にデータベース スキーマを接続できませんでした」のエラー対策

SQLserver2008のインストールに失敗したので2005に戻したところ、 VisualStudio2008のSqlDataSourceの設定画面でDBに接続しようとすると、 'Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' …

ASP.NETでau端末の文字入力モードの変更をする方法

http://www.agile-tech.com/blogs/dev/2008/08/aspnetkddi-auistyle.html で有用な情報がされています。 原因: Up.BrowserのVersion6以降では、 HTMLレンダリングにSystem.Web.UI.XhtmlTextWriterが用いられているため、 istyleなどの非正則属性を除去して…

ASP.NETのFormView内で、他のコントロールを参照する方法

<asp:FormView ID="FormView1" runat="server"> <EditItemTemplate> <asp:TextBox ID="TextBox1" runat="server" Text="" /> <a href="#" onclick="javascript:document.forms[0]. <%=((TextBox)FormView1.Row.FindControl("TextBox1")).ClientID %>. value = '初期値';">「初期値」と入力</a> </EditItemTemplate> </asp:FormView>

Webサーバに、OWC(OfficeWebComponents)をインストールする

Office Web Componentsを利用してASP.NETでグラフを作成する - japan.internet.com デベロッパー を参考にしたけど、環境が以下のとおり異なる。 .NET Frameworkバージョン ・・・ 2.0 OWCバージョン ・・・ 11 自身のサーバ環境は.net framework 2.0である…

ASP.NETのWebサイト内でQRコードを表示

まず、実現方法は大きく2つ。 外部のAPIをタダ借りする 自サイト内のクラスライブラリを使用して呼び出す 前者で有名なのがはてなのQRコード生成APIだろう。 IMGタグで http://d.hatena.ne.jp/barcode?str=http://www.yahoo.co.jp/といったように呼…

GridView内にある、LabelコントロールのTextの改行を反映させる

LabelコントロールのText内に改行が含まれていても、htmlとして反映されない。 これは、テキストの改行コード(\n)とhtmlの改行()が違うためというのは常識。 そこで、以下のように、GridView内のLabelのTextに、Replaceをかけてやる事で、改行を反映させ…

PagedDataSourceを使って、SqlDataSourceをRepeaterにバインドする例

PagedDataSourceの存在を今日初めて知った。 確かRepeaterをページングするのは、結構面倒なコーディングが必要だと記憶していたけど、 コントロールが用意されていたとは知らなかった。 PagedDataSource pds = new PagedDataSource(); pds.DataSource = Sql…

FormView等でバインドした値を取り出す方法

例えば、FormViewでバインドした値を、Page.Titleに表示する方法。 「((DataRowView)fv.DataItem).Row["TITLE"])」で取り出すのがポイント。 protected void FormView1_DataBound(object sender, EventArgs e) { using (FormView fv = (FormView)sender) { i…

標準のWeb.sitemap以外のSiteMapファイルを読み込む

目的 Web.sitemapでは、最上層のノードを1つしか指定できない。 通常はHOMEとなるページがあるのでこうした仕様でも問題ないが、 アプリケーション毎にディレクトリを作ってコンテンツを分けている場合などは、これでは都合が悪いと言う事がある。 そこで、…

CalendarExtenderコントロールの表記を、日本語化する

ajaxコントロールを呼び出しているScriptManagerに、以下のように書き加えてやればよい。 EnableScriptGlobalization="true" EnableScriptLocalization="true"

VisualStudio2008で、ajaxコントロールが挿入できない

ASP.NET AJAX Control Toolkit アセンブリの更新アプリケーションに ASP.NET AJAX Control Toolkit のコ の、「既存の AJAX 1.0 Web サイトまたは Web アプリケーション プロジェクトを開くには」を見ていたら、何とかクリアできた。

チルダを利用して、現在のパスを取得する方法

まず、VS2008のポップアップ説明をそのまま引用すると、 アプリケーション ルートの仮想パスを取得し、 ティルダ(~)表記("~/page.aspx"など)を使用した、 アプリケーションの相対パスにします。って何だそりゃ。まぁやってみた方が分かりやすいので実行…

クライアント側のキャッシュに残っている画像を更新させる方法

多くのBBS等でも既出だけど、 クライアント側のキャッシュが原因で、サーバーから読み込む画像が一時的に更新されないという現象がよくある。 特に問題となるのが、FileUploadコントロールを使った場合。 初回アップロード時は、それまで画像がなかったた…