2022年4月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
無料ブログはココログ

C#

[WCF] HTTP 応答の受信中にエラー

WCFで以下のエラーが出た場合は、
・通信量の設定を多くすることと
・DataTableをrefで使用している場合明示的にTableNameを指定してクライアント側に返すこと
(いずれもサーバ側の問題)

http://localhost:50748/test.svc に対する HTTP 応答の受信中にエラーが発生しました。
この原因としては、サービス エンドポイント バインドが HTTP プロトコルを使用していないことが考えられます。
また別の原因として、HTTP 要求コンテキストがサーバーによって中止された可能性もあります (サーバーがシャットダウンした場合など)。
詳細についてはサーバー ログを参照してください。

Web.Configの通信量設定

<system.web>
  <!-- 通信容量100MB タイムアウト3分 -->
  <httpRuntime maxRequestLength="102400" executionTimeout="180" />
</system.web>

<system.webServer>
  <security>
    <requestFiltering>
      <!-- 通信容量 512MB -->
      <requestLimits maxAllowedContentLength="536870912"/>
    </requestFiltering>
  </security>
</system.webServer>





C# 子フォームから親フォームの関数をCall

子フォームから親フォームの関数を呼び出す例

Form1が親フォームでForm2が子フォームとする

・Form1に関数定義
public void Hoge()
{

}

※Publicで定義

・Form1からForm2を表示

Form2 frm2 = new Form2();
frm2.Owner = this;    // 親フォームを指定
frm2.ShowDialog();    // frm2.Show();でもOK

Ownerプロパティがポイント

・Form2からForm1の関数を呼び出す

((Form1) this.Owner).Hoge();


C# キャスト演算子「as」

asを使ったキャストの場合、キャストに失敗しても例外エラーとならず、nullを返します。
[使用例]

// 通常のキャスト キャストできない場合は例外
ClassA a = (ClassA) b;

//as キャスト後nullチェックでキャストできたか確認できる
ClassA a = b as ClassA;
if(a != null)
{
    WriteLine("キャスト成功");
}

C# stringをboolに変換

string strBool = "true";
bool bln = System.Convert.ToBoolean(strBool);

C# VB6のIIF相当

C#でVB6のIIF関数があるか?と質問されたのでメモしておきます。

[VB6]
strA = IIf(i > 0, "プラス", "マイナスl")

[C#]
strA = i > 0 ? "プラス" : "マイナス";

C# 実行ファイルのパス取得

実行ファイル(exe)が格納されているフォルダのパスを取得するには・・・

[コード例]
MessageBox.Show(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location));

C# App.Config

VB6ではINIファイルやレジストリからアプリケーションの設定などを取得していましたが、.NET系はApp.Configから取得するのが一般的のようです。楽だし。

(コード例)
using System.Configuration;

// テキストボックスにApp.ConfigのTestの値をセット
txtBox1.Text = ConfigurationSettings.AppSettings["Test"]

[App.Config]
<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <appSettings>
     <add key="Test" value="テスト!!" />
  </appSettings>
</configuration>

C# if文について

VB系をメインにやっていた人が、C#のコード(javaも同様)を書くと

bool hoge;
if(hoge == true)
と記述したりしているのを見受ける。

if(hoge)
と記述した方がベターだと思う。

そもそもif文はboolの判定を行っているので(hoge == true)と明記する意味がない。
int i;
if(i > 0)も内部的には if((i>0) == true)という意味だし。

「==」を一つ書き忘れて「=」としていると悲劇。(C#ではアラートを表示してくれるが)

C# デザインパターン

Java言語で学ぶデザインパターン入門
http://www.amazon.co.jp/gp/product/4797327030/sr=1-1/qid=1155806011/ref=sr_1_1/250-2951381-8034606?ie=UTF8&s=books

でJavaの勉強をしていたのですが、
C#に書き直してくれているサイトもあるようです。

http://hccweb1.bai.ne.jp/tsune-1/index.html

ADO.NET SqlDataReader.NextResultメソッド

ADO.NETで複数の結果セットを取得するにはNextResultメソッドを使用します。

参考URL
http://msdn2.microsoft.com/ja-JP/library/system.data.sqlclient.sqldatareader.nextresult.aspx