2015年6月30日 星期二

[C#]計算Tiff檔頁數,使用BitMiracle.LibTiff.Net

用NuGet下載BitMiracle.LibTiff.Net,Version:2.4.511.0
官方網頁

原始碼如下
using BitMiracle.LibTiff.Classic;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Calculate_Tiff_page_with_BitMiracle.LibTiff.Net
{
    class Program
    {
        static void Main(string[] args)
        {
            string path = @"C:\Users\owlin\Downloads\test.tif";
            using (Tiff image = Tiff.Open(path, "r"))
            {
                Console.WriteLine(CalculatePageNumber(image));
                Console.ReadLine();
            }
        }
        private static int CalculatePageNumber(Tiff image)
        {
            int pageCount = 0;
            do
            {
                ++pageCount;
            } while (image.ReadDirectory());

            return pageCount;
        }
    }

}

[C#]FTP上下傳檔案,使用WinSCP

用NuGet下載WinSCP .Net Assembly,Version:5.7.4
官方網頁

原始碼如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WinSCP;

namespace FTP_download_and_upload_with_WinSCP
{
    class Program
    {
        static string ftpUploadUrl = "IP或domain"; //不可以有ftp:\
        static string ftpAccount = "Ftp帳號";
        static string ftpPassword = "Ftp密碼";
        static string localPath = @"D:\temp\";
        static string remotePath = "/work/";

        static void Main(string[] args)
        {
            Download();
            Upload();
        }
        private static void Upload()
        {
            try
            {
                SessionOptions sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Ftp,
                    HostName = ftpUploadUrl,
                    UserName = ftpAccount,
                    Password = ftpPassword,
                };

                using (Session session = new Session())
                {
                    // Connect
                    session.Open(sessionOptions);

                    // Upload files
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Binary;

                    TransferOperationResult transferResult;

                    transferResult = session.PutFiles(localPath + "*", remotePath, true, transferOptions); //*表示全部檔案

                    // Throw on any error
                    transferResult.Check();
                    // Print results
                    foreach (TransferEventArgs transfer in transferResult.Transfers)
                    {
                        Console.WriteLine("Upload of {0} succeeded", transfer.FileName);
                    }
                    session.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }

        private static void Download()
        {
            try
            {
                SessionOptions sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Ftp,
                    HostName = ftpUploadUrl,
                    UserName = ftpAccount,
                    Password = ftpPassword,
                };

                using (Session session = new Session())
                {
                    // Connect
                    session.Open(sessionOptions);

                    // Upload files
                    TransferOptions transferOptions = new TransferOptions();
                    transferOptions.TransferMode = TransferMode.Binary;

                    TransferOperationResult transferResult;

                    transferResult = session.GetFiles(remotePath + "*", localPath, false, transferOptions);//*表示全部檔案

                    // Throw on any error
                    transferResult.Check();
                    // Print results
                    foreach (TransferEventArgs transfer in transferResult.Transfers)
                    {
                        Console.WriteLine("Download of {0} succeeded", transfer.FileName);
                    }
                    session.Close();
                }
            }
            catch (Exception e)
            {
                throw e;
            }
        }
    }
}


2015年4月18日 星期六

[C#]複寫SignalR OnConnected、OnDisconnected、OnReconnected

若要複寫SignalR Hub的OnConnected、OnDisconnected、OnReconnected

JavaScript

var chat = $.connection.chatHub;
// Need at least one callback for events to be raised on the hub
chat.client.void = function () { };//這行非加不可  否則不會自動執行Server的OnConnected跟OnDisconnected
// Start the connection.
$.connection.hub.start();

[C#]SignalR聊天室使用MVC5

參考微軟官方文件
Tutorial: Getting Started with SignalR 2 and MVC 5

新增專案,選擇C# ASP.Net應用程式

選擇MVC範本

變更驗證,若選擇不驗證,則需要自己建立Startup.cs,這邊選擇個別使用者帳戶

工具>程式庫套件管理員>套件管理器主控台,輸入指令安裝SignalR Libraries
install-package Mircosoft.AspNet.SignalR
專案將安裝這些套件
在專案新增【Hubs】資料夾

在【Hubs】資料夾新增SignalR Hub類別

在【ChatHub.cs】增加Send Method

在【Startup.cs】註冊SignalR設定

在【HomeController】增加Chat的ActionResult

使用SignalR Client需安裝Microsoft.AspNet.SignalR.Client
在View>Home資料夾,增加View

修改【Chat.cshtml】的內容
聊天室展示