About VB.NET

ブログ「sanryuブログ」のカテゴリ「VB.NET」に投稿されたすべてのエントリーのアーカイブのページです。過去のものから新しいものへ順番に並んでいます。

前のカテゴリはSPREAD for Windows Forms 5.0Jです。

次のカテゴリはデータベースの設計について(私見)です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

VB.NET

Powered by
Movable Type 3.35

メイン

VB.NET アーカイブ

2011年04月08日

[VB.NET]FtpWebRequestで(550)エラー

[現象]
FtpWebRequestで(550)エラーが発生。

550:要求されたリクエストはアクセス権限やファイルシステムの理由で実行できない。

[原因]
ログインユーザーのルートディレクト以外のディレクトリにアクセスしている場合に発生。

[対応]
%2fエスケープをパスの中に含める。

[例]
ftp://hoge.com/%2fbar/test.txt

2011年04月18日

[VB.NET]ASP.NET開発サーバーで「リモート サーバーに接続できません。」がでた

[現象]
ローカル環境でWebサービスに接続時に「リモート サーバーに接続できません。」が発生。

System.Net.Sockets.SocketException: 通常、各ソケット アドレスに対してプロトコル、ネットワーク アドレス、またはポートのどれか 1 つのみを使用できます。

[原因]
ループの中でWebサービスに何度もアクセスするようなコーディングになっていた。
ソケット数の上限(ディフォルトで5,000)を超えたたために発生。

[補足]
Windowsのソケット最大数は、ディフォルトで5,000。
次のレジストリ エントリを操作して、最大 0xfffe (65534) まで設定可能。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort

[参考]
Windowsにおけるソケットの最大値とTIME_WAITの時間を修正しよう

netstatコマンドを使いこなす

2011年05月18日

[VB.NET]A1用紙が印刷できない。

[環境]
環境 :VB.NET 2005
プリンタ:A1が印刷できるプリンタ(プロッタ)

[現象]
下記でA1用紙を印刷すると、用紙の設定が反映されずディフォルトの用紙(今回はA4)で印刷される。
(1)PrintDocumentのPaperSizesからPaperSizeを取得
(2)PrintDocumentのDefaultPageSettings.PaperSizeに(1)で取得したPaperSizeを設定
(3)PrintDocument.Printで印刷

[原因]
多分、用紙サイズが"A1"以上場合は、カスタム用紙となる為、
PrintDocumentのPaperSizesから取得したPaperSizeを設定しても用紙の設定が反映されない。

[対応]
PaperSize クラスでカスタム用紙の設定をするを参考に用紙サイズを設定したが、印刷できなかった。
プラスで正しいPaperSize.RawKindを設定することで印刷できた。

''' 
'''  印刷サイズの取得
''' 
''' 
''' 
''' 
Private Function GetPrintingSizeFromPapaerName(ByVal paperName As String) As System.Drawing.Printing.PaperSize
  ’戻り値
    Dim result As System.Drawing.Printing.PaperSize = Nothing
  'PaperSizesから用紙を取得
    For Each ps As System.Drawing.Printing.PaperSize In _tiffDoc.PrinterSettings.PaperSizes
        Dim psPaperName As String = ps.PaperName.Substring(0, 2)
        If paperName.Equals("A0") = True Then
            'A0はカスタム用紙のインスタンスを生成
            result = CreateA0PaperSize(ps.PaperName)
        ElseIf paperName.Equals("A1") = True Then
            'A1はカスタム用紙のインスタンスを生成
            result = CreateA1PaperSize(ps.PaperName)
        ElseIf psPaperName.Equals(paperName) = True Then
            'PrintDocumentのPaperSizesから取得
            result = ps
            Exit For
        End If
    Next ps
    Return result
End Function

A0用紙のPaperSizeインスタンスを生成するメソッド。

''' 
''' A0用紙のPaperSizeインスタンスの生成
''' 
''' カスタム用紙名
''' 
''' 
Private Function CreateA0PaperSize(ByVal customPaperName As String) As System.Drawing.Printing.PaperSize
    'name , width ,height
    Dim ps As New System.Drawing.Printing.PaperSize(customPaperName, 3311, 4681)
    ps.RawKind = 119 'A0のRowKind PageSetupDialogで調べた結果
    Return ps
End Function

A1用紙のPaperSizeインスタンスを生成するメソッド。

''' 
''' A1用紙のPaperSizeインスタンスの生成
''' 
''' カスタム用紙名
''' 
''' 
Private Function CreateA1PaperSize(ByVal customPaperName As String) As System.Drawing.Printing.PaperSize
    'name , width ,height
    Dim ps As New System.Drawing.Printing.PaperSize(customPaperName, 2339, 3311)
    ps.RawKind = 120 'A1のRowKind PageSetupDialogで調べた結果
    Return ps
End Function

APIは使用したくなかったので印刷できたよかった。

2011年07月12日

[VB.NET]既存の接続はリモート ホストに強制的に切断されました

[現象]
VS2005、IIS7.0 スマートクライアント構成で、
Webサービス接続時に
「既存の接続はリモート ホストに強制的に切断されました」が発生。

[原因]
IIS7.0がHTTP1.1 で接続時にKeep-Aliveがディフォルトで有効になっていた為に発生。

[対応]
Keep-Aliveを有効にする必要性がない為に、無効とした。

2011年10月13日

[VB.NET]WEBメソッドの改行コードが変換される

環境:VB.NET 2005 、スマートクライアント

<現象>
改行コードCRがLFに変換されている。

<参考サイト>

Webメソッドのstring型の戻り値に含まれる改行コードが変換されてしまう

WebMethod中の改行コード(CRLFがLFになっちゃう)

<戻り値の型>
今回、確認できたは、戻り値の型は下記
(1)戻り値がDataTableの場合は、改行コードが変換される。
(2)戻り値がDataSetの場合は、改行コードが変換されない。

2011年11月14日

[VB.NET]WMIでプリンタジョブを取得する

    ''' 
    ''' プリンタジョブを取得する
    ''' 
    ''' プリンタ名
    ''' 
    ''' 
    Public Shared Function GetPrintJobsCollection(ByVal printerName As String) As List(Of String)
 
        Dim printJobCollection As New List(Of String)
        Dim searchQuery As String = "SELECT * FROM Win32_PrintJob"
        Dim searchPrintJobs As ManagementObjectSearcher = New ManagementObjectSearcher(searchQuery)
 
        Dim prntJobCollection As ManagementObjectCollection = searchPrintJobs.Get()
 
        For Each prntJob As ManagementObject In prntJobCollection
            Dim jobName As String = prntJob.Properties("Name").Value.ToString()
 
            Dim prnterName As String = jobName.Split(",")(0)
            Dim documentName As String = prntJob.Properties("Document").Value.ToString()
           If String.Compare(prnterName, printerName) = 0 Then
                printJobCollection.Add(documentName)
            End If
        Next
        Return printJobCollection
    End Function

2011年11月
Sun Mon Tue Wed Thu Fri Sat
    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