ラベル C# の投稿を表示しています。 すべての投稿を表示
ラベル C# の投稿を表示しています。 すべての投稿を表示

2016年2月16日火曜日

開発初心者がこれだけは知っておいた方が良いこと②

こんにちは!Sです。
前回に引き続き「開発初心者がこれだけは知っておいた方が良いこと」について書いていきます。

今回のテーマは「おかしいところの見つけ方について」です。

ネットで調べて見よう見まねで書いてみたけれど上手く動かない。。。という時に
早くどこがおかしいのかを見つける方法について書いていきます。


<エラー画面が表示されている場合>

①ログを見る
 新規作成の場合は自分でログをはくように設定しないといけませんが、
 既存のファイルの修正であればおそらく既にエラーが起きた際にエラーログを出力するように
 設定されているはずです。
 なのでまずはソースからログの出力先を調べて、ログを見に行きましょう!


<エラー画面は表示されていないが、やりたいことが出来ていない場合>

①デバッグする
 ここがおかしいのかも。という怪しい場所付近にブレークポイントを設けて、
 デバッグして下さい。きっとヒントになるはずです。
 ▼最初にマスターしたいVisual Studioのデバッグ機能 -基本編-
 http://news.mynavi.jp/articles/2008/08/18/debug/

②Response.Writeを使う
複数の処理を連続して行っており、それらのどれが原因かを調べるのに便利です。
例えば...
aに対して処理B、C、Dを連続して行うのであれば一旦それらを分けてみましょう!

Response.Write(a);
Response.Write(b);  //bはaにBの処理をしたもの
Response.Write(c);  //cはbにCの処理をしたもの
Response.Write(d);  //dはcにDの処理をしたもの

これでブラウザにa,b,c,dが表示されるので、処理のどの段階でおかしなことになっているのかが一目瞭然です。


2016年2月9日火曜日

C# 列挙型 enum

こんにちは山田です。

開発言語:C#

C#の基本構文でいまいち呑み込めなかった部分について
わからないなりに解説をしようと思います。

~良くわかっていない人による解説~

■列挙型とは (enum)
特定の値しか取らないようなものに対して使用します。
たとえば曜日だったら 月~日までの7つのみになります。
この曜日を例に取り上げていこうと思います。

■基本構文

【定義の仕方】
列挙型の宣言はenumをはじめに記述し、つづいて列挙型の名前を記述します。
-------------------------------------------------
enum 列挙型名
{
  メンバー1, メンバー2, …, メンバーn    ←列挙定数
}
-------------------------------------------------

例1)
-------------------------------------------------
enum Week
{
Sun, Mon, Tue, Wed, Thu, Fri, Sat
}
-------------------------------------------------
そしてそれぞれの識別子には0から順番に1ずつ増える整数値が割り当てられます。

Sun:0
Mon:1
Tue:2
 :
Sun:6


例2)
-------------------------------------------------
enum Week
{
 Sun, Mon=100, Tue, Wed, Thu, Fri=200, Sat
}
-------------------------------------------------
もし任意の値を代入すると、そこから1ずつ増加します

Sun:0
Mon:100
Tue:101
Wed:102
Thu:103
Fri:200
Sat:201

例3)
列挙要素の基になる既定の型はintですが、
Int型以外で整数値を使いたい場合は以下ように記述します。
-------------------------------------------------
enum Week : byte
{
 Sun =1
 ,Mon =2
 ,Tue =3
 ,Wed =4
 ,Thu =5
 ,Fri =6
 ,Sat =7
}
-------------------------------------------------
他にはこんな型が使用できます。
byte、sbyte、short、ushort、int、uint、long、ulong


【利用する方法】

識別子を参照する時は以下のように記述します
----------------------------
列挙型名.メンバー名
----------------------------

例4)
using System;

class Sample
{
 protected enum Week : int
 {
 Sun =1
 ,Mon =20
 ,Tue =30
 ,Wed =40
 ,Thu =50
 ,Fri =60
 ,Sat =70
 }

 /// 
 /// 日本語の曜日をただ返すプログラム
 /// 
 protected void SampleProgram(Week[] _day){
  for (int i = 0; i < _day.Length; i++)
  {
   switch (_day[i])
   {
    case Week.Sun: Console.Write("日曜"); break;
    case Week.Mon: Console.Write("月曜"); break;
    case Week.Tue: Console.Write("火曜"); break;
    case Week.Wed: Console.Write("水曜"); break;
    case Week.Thu: Console.Write("木曜"); break;
    case Week.Fri: Console.Write("金曜"); break;
    case Week.Sat: Console.Write("土曜"); break;
   }
  } 
 }

 static void Main()
 {
  Week[] day = new Week[] { Week.Mon, Week.Tue, Week.Wed, Week.Thu, Week.Fri, Week.Sat, Week.Sun };
  SampleProgram(day);
    }
}

結果:月曜火曜水曜木曜金曜土曜日曜

すごく微妙なサンプルになったと思いました。


■ちなみに整数値の方を使用したいときは、
以下のように型変換すればOKです。
----------------------------
(整数型)列挙型名.メンバー名
----------------------------


■その他こわざ

参考になった応用の例です。
・enumの値を任意の文字列に変換する
・数値がenumで定義済みがどうかチェックする
・enumの値を列挙する
http://qiita.com/hugo-sb/items/38fe86a09e8e0865d471

2016年1月29日金曜日

スマホで写真を投稿したら・・・ひっくり返って表示された!

「スマホで写真を投稿したら・・・ひっくり返って表示された!」



なんてことに出会ったことはありますか?

写真のデータの中には、写真の情報はもちろんですが、
どういう風に写真を撮ったのか、というデータも持っています。

-スマホを縦にして写真を撮ったのか、横にして写真を撮ったのか。

といった情報です。

この情報を正しく扱ってあげないと、Web上で写真を表示するときに、
ひっくり返ったり、横向きになったりしてしまうのです。

デジカメ画像の規格として、Exif(イグジフ)というものがあります。
※詳しくは、http://e-words.jp/w/Exif.html

この規格を採用しているカメラ(スマホカメラ含む)の場合、
写真以外に様々なデータが、付加情報として記録されます。

この付加情報を持っている写真データの場合は、
その情報を考慮し、写真を保存してあげないと、ひっくり返ったり、横向きになったりしてしまうのです。

iPhoneのカメラで採用されていることもあり、開発する際に遭遇することもあると思うので、
付加情報の確認とその修正のサンプルを載せておきます。

もちろん、C#です。

private void CheckProperties(string _path)
{
 // 対象の写真を開きます
 System.Drawing.Bitmap origin = new System.Drawing.Bitmap(_path);

 // 画像の回転度合の設定用
 System.Drawing.RotateFlipType rotation = System.Drawing.RotateFlipType.RotateNoneFlipNone;
 // 開いた写真の情報を順に確認します。
 foreach (System.Drawing.Imaging.PropertyItem item in origin.PropertyItems) {

  // 写真の向きの情報は、0x0112というIDに割り振られているので、このID以外はすっ飛ばします
  if (item.Id != 0x0112)
  {
   continue;
  }

  // IDが0x0112の時なので、向きの情報が取れる場所
  switch(item.Value[0])
  {
   case 1:// 不要(回転・反転なし)
    break;

   case 2:// 水平方向に反転
    break;

   case 3:// 時計回りに180度回転
    // 時計回りに180度回転しているので、180度回転して戻す
    rotation = System.Drawing.RotateFlipType.Rotate180FlipNone;
    break;

   case 4:// 垂直方向に反転
    break;

   case 5:// 水平方向に反転+時計回りに270度回転
    break;

   case 6:// 時計回りに90度回転
    // 時計回りに270度回転しているので、90度回転して戻す
    rotation = System.Drawing.RotateFlipType.Rotate90FlipNone;

    break;

   case 7:// 水平方向に反転+時計回りに90度回転
    break;

   case 8:// 時計回りに270度回転
    // 時計回りに90度回転しているので、270度回転して戻す

    rotation = System.Drawing.RotateFlipType.Rotate270FlipNone;

    break;

   default:    break;

  }

  // といった感じで、item.Value[0]の値で、どんな状態なのかが分かるのです。
  // あとは、この値を元に処理をしてあげればOK
  // 上記の3、6、8には正しくする処理を記載しましたので、参考にしてみてください

 }



 // 画像を複製して、回転を正す
 System.Drawing.Image rotated_image = (System.Drawing.Image)origin.Clone();

 // 複製する際のフォーマット(元の画像と一緒にする)
 System.Drawing.Imaging.ImageFormat format = origin.RawFormat;

 // オリジナルの画像から、欲しいものは奪えたので、閉じちゃう
 origin.Dispose();

 // 指定された角度だけ画像を回転する
 rotated_image.RotateFlip(rotation);

 // 回転を正したものを、指定のパスに保存
 try
 {
  rotated_image.Save("新たな保存先", format);
 }
 catch(Exception ex)
 {
  rotated_image.Dispose();
 }
 finally
 {
  rotated_image.Dispose();
 }
}

2016年1月28日木曜日

開発初心者がこれだけは知っておいた方が良いこと①

こんにちはSです!

前回、自己紹介でも書きましたが、わたしは7ヶ月前まで本当に何も知らず、
分からない事だらけでした。
(ブラウザって何?アマゾンって本屋さんじゃないの?!という状態でした。
本当にごめんなさい。。。)

そこで今回は「最初にこれを知ってたらもっとラクだったかも」と思うことを思い出しながらまとめます。

基本中の基本なのでベテランの方々は読み飛ばすか、
もしくは次に新人さんが入ってきたときに、こういうところにつまづくんだな~という参考にしてみて下さい。


◆勘違いポイント
わたしがはまった勘違いポイントです。
きっと誰でも最初に一度ははまるのではないでしょうか。。。?わたしだけ??

①JavaとJSは別物・・・
 先輩たちがJSといっているものはJava Scriptという言語のことであり、Javaとつきますが
 Javaとは完全に別物です。

②JSとjQueryも別物・・・
 「jQueryはJSで書くと何十行にもなるものを少ない行数で書けるようにまとめたライブラリだよ」
 と教わったので、わたしは「jQueryはJSの短い版でほとんど一緒なんだ!」
 という拡大解釈をしていましたが、書き方が違います。
 なのでjQueryオブジェクトをJSの書き方で動かそうとしても全く動きません。。。

◆最初のつまづきポイント
①{ }の中で定義した変数は{ }の外で使えない←当たり前

②分からないことがあってもどんなワードで検索すれば良いのか良く分からない
 →「やりたいこと C#」とかで調べてみるけどやりたいことの表現が適格でないと全然欲しい結果が返ってこない
 →もういっそ先輩に「こういうことがやりたいんですけど、なんてググったら良いですか?」と聞いた方が早い

③もともと用意されているメソッドと自分(の会社の人)が作ったメソッドの違いが分からない
 →オリジナルのメソッド名でググるけど何も出てこない。。。
 →オリジナルのメソッドはそのページ内、もしくは継承しているページのどこかで定義しています


◆先に知っておいた方が良いVisual Studioの機能
①Ctrl + スペース で携帯の予測変換みたいなことができます
 →ちょっと意味が分からないと思いますが、とりあえずやってみて下さい

②メソッドの上でF12を押すとそのメソッドを定義しているところに飛べる

③変数やメソッドの上でダブルクリックして少し待つと、同じ名前を使っているところの背景がグレーになります
わたしはせっかちすぎて1ヶ月くらい気づきませんでした



◆番外編(便利なショートカットキー)
営業からシステムに異動になり、色々と教えて頂く中でショートカットキーも教わり
非常に感動しました!
今までなんて非効率なことをしていたんだろう。。。

開発初心者の方はこれからバンバン開発をしていく上で、非常に業務効率があがると思うので
ぜひ使ってみてください♪

ステップ1 ~結構誰でも使ってる?~
Ctrl + C コピー
Ctrl + V ペースト
Ctrl + X 切り取り
Ctrl + A 全選択
Ctrl + S 保存
Ctrl + Z 戻る
Ctrl + Y 進む

ステップ2 ~知らなかったらすごく感動する~
Alt + Tab  画面の切り替え
田 + E   エクスプローラーを表示
田 +  →  画面の右半分に表示
田 +  ↑  最大化
田 +  ↓  最小化

他にも色々あるようですが、このへんがオススメです!
ベテランエンジニアの方々はきっともっと知ってるはずので聞いてみて下さい。





定数の新しい行です エラー

こんにちは山田です。

(ちなみに開発言語:C#の話)

本日もカタカタとプログラミングをしている中 
文字の置き換え(String.Replace)を行おうと思ったら見慣れないエラーが
 

「定数の新しい行です。」

ちょっとわからなくグーグル先生に聞いてみました。
どうやら調べてみると¥の文字に原因があるようでした。
 解決方法としては2パターン見つかりました↓

■解決方法①

 \を直接書かず
System.IO.Path.DirectorySeparatorChar; を使う
tempFileName1.Value.ToString().Replace("/", "System.IO.Path.DirectorySeparatorChar;");
■解決方法②
 "\"の前に@を付ける
tempFileName1Value.ToString().Replace("/", @"\");
■解決方法③

 \\と書く
tempFileName1.Value.ToString().Replace("/", "\\");
結局は方法②を取りました。

2015年12月14日月曜日

”CustomValidator”について

こんにちわ、開発者のⅠです。

さて、今回はASP.NETの検証コントロールの一つである「CustomValidator」についてのお話です。
といってもそんな大したことではないですが……。
他の検証コントロールには、「RequiredFieldValidator」「RegularExpressionValidator」などがありますが、これらと「CustomValidator」には違いがあります。

それは、『ControlToValidate』プロパティが空でも良いという点です。

つまりは、検証対象の指定が必須ではなく、任意であるということです。

ソースコード側で、検証の対象やErrorMessageプロパティに適当なメッセージを設定することも可能です。

やはり、"Custom"という名は伊達じゃないといった所でしょうか。


それでは、今日はこの辺りで失礼します。

2015年12月10日木曜日

任意のURLの文字列を作るためには?

こんにちは山田です。

本日は任意のURLの文字列を作成する方法です。
そもそもの経緯としては、改ページをする時に、現在のURLをそのまま引き継ぎつつ新しいURLとしてページ番号入りのものをつくるために使いました。
開発言語:C#

public static void Main() 
{
 string _param = "";//何か引数があれば"&"ごとに代入
 string url = CreateLink(1,100, _param != "" ? "?" + _param : "");
 Console.WriteLine(result);
}
public string CreateLink(int _caseID, int _ID, params object[] _args)
{
 string result = "";
 if(_args != null && _args.Length > 0)
 {
  switch (_ID)
  {
   case 1:
    // 0:ID 1:queryparam
    result = string.Format("/zoo/{0}/index.aspx", Utility.NullToString(_args[0]).PadLeft(4, '0'));
    if (_args.Length >= 2)
    {
     result = string.Format("/zoo/{0}/index.aspx?{1}", Utility.NullToString(_args[0]).PadLeft(4, '0'), Utility.NullToString(_args[1]));
    }
    break;
   case 2:
    //他のこと
    break;
   default:
    break;
    
   }
  }
  return result;
 }
}
 
この場合出力は 
/zoo/0100/index.aspx
となります。 
もし別途パラメータを付けたい場合も
/zoo/0100/index.aspx?page=1&area=1
と使うことが出来ます。 

2015年12月9日水曜日

クライアントからリクエストされたURLを取得する方法

 こんにちは山田です。
開発環境:ASP.NET2.0
開発言語:C#

リライトをかけたページの改ページと並び替えをしようと思っていた時に、
仮想URLを取得したい場面がありました。

クラスライブラリを探したり、ネットを探したら
綺麗にまとめているページがあったので参考にさせていただきました。

プロパティ 種類 物理/仮想 クエリ情報 追加パス
ApplicationPath アプリケーションパス 仮想 × ×
PhysicalApplicationPath アプリケーションパス 物理 ×
CurrentExecutionFilePath ファイルパス 仮想 × ×
FilePath ファイルパス 仮想 × ×
Path ファイルパス 仮想 ×
PhysicalPath ファイルパス 物理
RawUrl ファイルパス 仮想
Url ファイルパス 仮想(フルURL)
PathInfo 追加パス 仮想 ×
 @IT[ASP.NET]クライアントからリクエストされたURLを取得するには?

 このRawUrlを使って解決しました。
他にもプロパティがあるので試してみようと思います。

2015年12月3日木曜日

GetTypeで型名を見る C#

こんにちは山田です。

型名って忘れること多くないですか?
そんな時にこれさえ覚えとけば安心の、型名の出力方法の覚書です。
開発環境:ASP.NET 2.0
開発言語:C#

必要となる構文はこちらです。
 Object.GetType メソッド

例) ASPX側


 <%# Eval("AnimalName") %>


ASPX.CS側
protected void AddStatus(object sender, RepeaterItemEventArgs e)
{
  //is演算子でオブジェクトの型の確認
  if (e.Item != null && e.Item.DataItem is string)
  {
  Control ctl1 = e.Item.FindControl("ahref");
  //ct1の形名がわからないとき
  Response.Write(ctl1.GetType().Fullname);
  //出力は「System.Web.UI.HtmlControls.HtmlAnchor」となり型名を教えてくれる

  if (ctl1 != null && ctl1 is System.Web.UI.HtmlControls.HtmlAnchor)
  {
      //型名に合わせて安全にキャストできる
   ((System.Web.UI.HtmlControls.HtmlAnchor)ctl1).Href = "";
  }
}

2015年11月30日月曜日

C# ref修飾子とout修飾子とは

こんにちは山田です。
メソッドに引数を参照渡しで渡す方法です。


メソッドの戻り値で完結することが多いのですが、
それ以外に、戻り値とは別に引数を返したい場合があります。

自分が使うシーンとしては、メソッドの戻り値でDBから取得したデータリストを取得して、
そのデータの個数の値を別個に取得したいときなどがあります。

開発環境:ASP.NET2.0
開発言語:C#

値渡しの場合と、参照渡し場合の違いをまとめてみました。

■元々(値渡しの場合)
    public static void A(int arg1)
    {
        arg1 = 50;
    }
    public static void Main()
    {
        int x = 10;
        A(x);
        Console.WriteLine(x);
    } 
出力は10のままで、呼び出しもとには影響がありません。


■ref修飾子(参照渡し)
    public static void A(ref int arg1)
    {
        arg1 = 50;
    }
    public static void Main()
    {
        int x = 10;
        A(ref x);
        Console.WriteLine(x);
    } 
出力は50になる
呼び出しもとの数値が変わりました。

■out修飾子(参照渡し)
outを使う場合はrefとは違い
あらかじめ値を代入しておく必要がなくなります。
    public static void A(out int arg1)
    {
         arg1 = 50;
    }

    public static void Main()
    {
        int x; //←ここで代入しても参照が渡ることはないです。
        A(out x);
        Console.WriteLine(x);
    } 
出力が50になる。

その代わりAメソッド内でoutパラメータのarg1の値を使用することができず、
必ず、新しい値が代入されてしまいます。

2015年11月27日金曜日

ASP.NETでのURLリライトの流れ


こんにちは山田です。
長年の疑問のURLリライトについてわかってきたので
その覚書です。 

開発環境:ASP.NET2.0
開発言語:C#
IIS:6.1

■URLリライトの別名
URLリライト=URL書き換え
日本語だとURL書き換えとなります。

■そもそもURLリライトは必要なの?
個人的な疑問としてページリライトの技術はURLから判断して、
IISのサーバーのファイルディレクトリ(どの階層にいるのか)がわかりにくくなるし、
今見ているページの関連する記事を探したい場合、URLの法則性がわからないのでなんと打ち込めばよいのかわからない等の感想を持っていました。(こんな使われ方は想定されていいないと思いますが、、、)

一般的にどういう目的で使われているかと
  • URLが短い。
  • URL入力が簡単になる。
  • URL を見ると、サイトの構造がわかる。
  • "短縮可能 (hackable)" である。つまり、ユーザーが URL の一部分を入力すれば、そのサイトを表示して目的のページに移動できる。
というメリットがあるので、やはり必要な技術のようです。
特にURLが短い場合、気軽にそのwebページにアクセスしやすくなりますね。

ASP.NET での URL 書き換え

↑ここをざっと読んでみたのですが。
Umm...よくわからない。

■自分なりに実装したページリライトの流れをまとめてみました。

・実態のURL:/contentDetail.aspx
・必要な引数: userID=yamada&contentID=101
・リライト後のURL: http://blog.jp/yamada0101/

URLで
http://blog.jp/yamada0101/ → とアクセスさせたかった場合
   ↓
web.configにリライトルールを記述する(事前に)
   ↓
IISがリライトルールにそって、そのURLから実態のURLに直す
(/yamada0101/→/contentDetail.aspx?userID=yamada&contentID=101)
    ↓
IISが実態のファイルのページを判定する
(/contentDetail.aspx)
   ↓
クエリスストリングの必要なIDをRequestで取得する
   ↓
取得したuserIDとcontentIDから目的のブログ記事を
DBから取り出してページをレンダリングする
   ↓
  終わり

この流れがわからなくて、もやもやしていました。
他の言語や、開発環境だとまた違うのかな?
またふと疑問に思ってしまいました。

2015年11月10日火曜日

ページのリダイレクト方法 web.config

ページのリダイレクト方法

こんにちは山田です。
リダイレクトについてまとめました。(action type="Rewrite"でリライトも設定できます。)

開発環境:ASP.NET
使用言語:C#

リダイレクトの書き方ですが
いくつか方法があるようなのですが、
今回はWeb.configに記述する方法を使います。

まず、nameにリライトルールの名前を記述します。
次に、このルールにマッチする正規表現を設定します。
最後に、URLがマッチしたときに発生するアクションを設定します。

 この“^campaign/index([0-9]{6}).aspx$”では、
もし入力URLが“^campaign/index([0-9]{6}).aspx$”の場合、{R:0}は“campaign/index201511.aspx”となり、{R:1}は“201511”になります。
ユーザーをリダイレクトするURLになるよう、この{R:1}/の値を使用します。
({R:N}のNとは後方参照のインデックスになります)

<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Rewriteルール名" stopProcessing="true">
          <match url="^campaign/index([0-9]{6}).aspx$" />
          <action type="Redirect" url="{R:1}/" />
        </rule>
      </rules>
    </rewrite>
  </system.webServer>
</configuration>

2015年10月23日金曜日

サーバーコントロールの属性を書き換える方法

どうも山田です。

ASP.NET環境で開発を行っているシステム屋です。
デザイン側の属性を書き換える方法の覚書です。
意外と便利です。

aspx
 <a href="#" class="btnNegative" runat="server" id="linkToTop">

C#
lintToTop.Attributes.Remove("href");
lintToTop.Attributes.Add("class", "btnDisabledNotGray m20");
lintToTop.Attributes.Clear();

①href属性を削除
②class属性を上書き
③すべての属性を削除

2015年10月22日木曜日

タイニーPNG のAPIを利用した画像圧縮アプリケーションの作成

こんにちわ山田です。
昨日は、オリオン座流星群がよく見えたそうですね。
まったく見れなかったです、、。

たまたま夕方のニュースで情報を得ていたので、楽しみにしていたら
朝になるまで思い出せませんでした。

そんなこんなで、画像を外部のサービス(API)を利用して
圧縮して、画像サイズを小さくするメソッドを作成したので、その覚書です。

開発環境 ASP.NET
開発言語 C#

使用したのは、TinyPNGでほぼ公式のリファレンス通りに実装しました。 
画像→byte配列にするのが苦戦しました。ここを参考にさせていただきました。 

呼び出し元
    protected void ButtonUpload_Click(object sender, EventArgs e)
    {
        Label1.Text = "";
        if(FileUpload1.HasFile)
        {
            string path = @"C:\temp\\";
            //つけたいファイル名
            string fileName = FileUpload1.PostedFile.FileName;
            string output = Path.Combine (path, fileName);

            //アップロードファイルを入力ストリーム経由でbyte配列に読み込む
            Byte[] aryData = new Byte[FileUpload1.PostedFile.ContentLength];
            FileUpload1.PostedFile.InputStream.Read(aryData, 0, FileUpload1.PostedFile.ContentLength);
            output = SizeDownImage(aryData, output);
            Label1.Text = "次のファイル名で保存しました: " + output;
        }
  
呼び出される側
    /// <summary>
    /// アップされた画像をTinyJPGのAPIを使用して、圧縮して保存するメソッド
    /// ・引数:
    ///  byte[] 画像のバイナリデータ
    ///  string 保存先のファイルパス
    /// ・返り値:
    ///  string 保存後のファイルパス
    ///   ※失敗した場合は、空を返却
    /// </summary>
    /// <param name="_imageByte"></param>
    /// <param name="_output"></param>
    /// <returns></returns>
    public static string SizeDownImage(Byte[] _imageByte, string _output)
    {
        string key = [外部APIキー];

        string url = [外部APIのURL];
        string auth = Convert.ToBase64String(Encoding.UTF8.GetBytes("api:" + key));

        WebClient client = new WebClient();
        client.Headers.Add(HttpRequestHeader.Authorization, "Basic " + auth);
        string result = "";
        try
        {
            //画像アップロード //
            client.UploadData(url, _imageByte);
            // 画像ダウンロード
            client.DownloadFile(client.ResponseHeaders["Location"], _output);
            result = _output;
        }
        catch (WebException ex)
        {
            log.Error(ex.Message);
        }
        finally
        {
            client.Dispose();
        }
        return result;
    }
}

2015年10月16日金曜日

インライン式 <%= %> と <%# %>の違い

インライン式
<%= %> と <%# %>の違い

こんにちわ、山田です。
ASP.NETを使っていてよくわからなかったところがあったのでまとめました。
この書き方、調べたらインライン式というらしい。
自分がよく使うものをまとめてみました。

■埋め込みコードブロック【<%= %>】
Response.Writeで代用できるブロック
値(string)を返す時はこれを使用する

(例)
<%= shopName %>
   ↑ソースファイル(csファイル)でprotectedのもの

■データバインド式【<%# %>】
RepeaterサーバーコントロールなどでBindしている場合(Eval)はこれを使う

(例)
 <asp:Repeater runat="server" ID="shopList">
  <ItemTemplate>
    <%# (Eval("ShopName"))%>
  </ItemTemplate>
 <asp:Repeater>


インライン式(<%=, <%@, <%#, <%$, <%--)の概要



2015年10月6日火曜日

指定の文字数を取得する


こんにちはYです。
SEO対策をしていて、ちょっと文字が多いな、、、と感じた箇所にぶつかりました。
データもとの文章を変更せずに、先頭の~文字で切って妥協することにしました。
その時の対処方法です。

String.Substring メソッドを使用しました。

String nagaiMoji = "Hello World!"
String moji = nagaiMoji.Substring(1, 6);

上記の場合の出力は「ello W」となります。

これを使用して、String moji = nagaiMoji.Substring(0, 99);
100文字分を取得するようにと書くことができました。

2015年10月2日金曜日

ファイルアップロードで苦戦したところ(4MB)

こんにちわYです。
本日は、ASP.NET 2.0 のファイルアップロードで苦労したところになります。
どういうわけか、ファイルサイズが4MB超えるとエラーになってしまうというものです。

System.Web.HttpUnhandledException。種類 'System.Web.HttpUnhandledException' の例外がスローされました。~

こんな感じ

調べてみたらサーバーコントロールのFileUploadを使用したときの上限値は4,096kbになっていたということがわかりました。このPOSTされるアップロードの上限を変更するには、
Web.configのhttpRuntime要素のmaxrequestlength属性に追加すればいいみたいです。
ちなみにデフォルトの上限値は4,096kbで、これを5,120kbへ変更する方法です。

↓↓

<configuration>
    <system.web>
        <httpRuntime maxrequestlength="5120">
    </system.web>
</configuration>