2015年12月23日 星期三

【ASP.NET SQL】有關於 開發時使用到:Geography Geometry 資料 null 問題

Asp.net 開發時使用到 圖台 出現臨時問題


可能會用到 兩種型態欄位 Geography / Geometry

當build 好的web 程式放在 Windows 2012 R2 上,環境 Framework 4.5 及 iis 8.5 內

顯示頁面記錄:讀取程式中 Geography / Geometry 資料時, 會是 null

原因:Framework CLR 不支援 SQL 格式欄位,就直接顯示 NULL

解決方案一:

專案 bin 中沒有引用到 Microsoft.SqlServer.Types.dll 元件
所以會出問題...你可以加入參考元件,它讓在bin 出現,
然後web.config 中 記得要加入以下

< add assembly="Microsoft.SqlServer.Types, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845DCD8080CC91" >

它的存在是,本機有安裝 SQL 2008 R2 它就會裝在:
C:\Program Files (x86)\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.SqlServer.Types.dll
就能找到它


解決方案二:

你可以裝 軟體全名是:Microsoft® System CLR Types for SQL Server® 2008 R2
下載連結:https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

檔案:SQLSysClrTypes.msi   (看系統核心是i64 或x86)

下載連 頁面中有一小段的說明:
SQL Server 系統 CLR 類型封裝包含一些元件,可實作 SQL Server 2008 R2 中的幾何、地理和階層識別碼類型。這個元件可以與伺服器分開安裝,以便讓用戶端應用程式在伺服器外部使用這些類型。

注意:本元件也需要 Windows Installer 4.5。 應該windows 2012 R2 應該是符合

安裝完後必需web 應用程式集區點選回收,或IIS重新啟動,就可以在開發專案程式不用引用Microsoft.SqlServer.Types.dll元件,

PS.好奇之心 SQL CLR 到底安裝了什麼,結果居然是一模一樣的檔案跟路徑,或許有其它東西我沒發現,總言之,就是這樣子處理掉問題


下載不同 2008 CLR  版本 ,看你資料庫是用哪種
Microsoft® SQL Server® 2008 R2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=16978

Microsoft® SQL Server® 2008 R2 SP1 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=26728

Microsoft® SQL Server® 2008 R2 SP2 功能套件
https://www.microsoft.com/zh-tw/download/details.aspx?id=30440

2015年12月9日 星期三

【資訊安全】IIS 8.5 Header 標頭 隱藏 & asp.net 處理

Server (值:Server: Microsoft-IIS/8. X-AspNet-Version)
(檔案:Global.asax)
Response.Headers.Remove("Server");


X-AspNet-Version (值:4.0.303319)
(檔案:web.config 說明:取得或設定值,指出 ASP.NET 是否應輸出版本標頭)
設定:

(或)or
也可在 Global.asax Response.Headers.Remove("X-AspNet-Version");

X-Powered-By(值:ASP.NET)
(檔案:Global.asax)
 

參考網址:http://kevintsengtw.blogspot.tw/2014/02/aspnet-mvc-response-headers.html

2015/12/24 重新記載:在IIS 中安裝 URL Rewrite Module 才是最簡單的方式

因為Server header 我怎麼做都移不掉,我是透過 rewrite Module 處理

簡單說明:http://www.henrylee.link/2015/09/10/how-to-remove-all-information-about-iis-server-from-response-header/

相關參考:https://blog.johnwu.cc/article/asp-net-optimized-setting.html
web.config
<rewrite>
            <outboundRules>
                <rule name="Strip Headers">
                    <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                    <action type="Rewrite" value="MyServer" replace="true" />
                    <conditions>
                    </conditions>
                </rule>
            </outboundRules>
        </rewrite>

另外,若您的 IIS 設定  整合性 它只會認web.config  system.webServer 區域的 module 設定

要注意

2015年11月12日 星期四

【ASP.NET】具有潛在危險Request.Form 問題處理

Framework 4.0 環境 、web form

具有潛在危險Request.Form 問題處理 出現狀況:
當網址參數有特殊 html tag 標籤:比如
等....,就會出現訊息


而我在web.config error page 無法攔截 ,導致呈現系統的原始錯誤訊息

處理方式有幾招

【第一招】
解決1:頁面上加上:ValidateRequest="false"
<%@ Page Language="C#" ValidateRequest="false" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1"

PS.pages validateRequest單一頁面開了洞,有資安大問題

【第二招】
解決2:web.config 加上紅色兩行

system.web 裡面加
1.第二招之1
httpRuntime requestValidationMode="2.0"
若不行再加上以下
pages validateRequest="false" 等同第1招,但是是全網站

參考網址說明:http://shiyousan.com/post/635563669112062894

Ps.pages validateRequest 缺點資訊安全開了個門,requestValidationMode降低驗證方法

【第三招】
解決3:程式必需特別加寫 Page_Error 裡面處理

PS.在程式加寫ERROR 訊息,轉頁動作,有點麻煩


【第四招】
解決4:在Global 檔裡面處理

Application_Error 事件裡面加上
            if (typeof(System.Web.HttpRequestValidationException) == Server.GetLastError().GetType())
            {
                logger.Info("Ezland.Web: application error");
                logger.Info(Server.GetLastError().Message);
                Response.Redirect("~/ErrorPage.aspx");

            }
PS.最好的解法

流程是 頁面 ERROR  沒有特別寫,會到web.config ,Web.config 失效的話會導向Global Application_Error 事件處理

2015年10月26日 星期一

【名人堂之言】

畢卡索(Picasso)名言
「好的藝術家懂複製,偉大的藝術家則擅偷取。」

價伯斯(Jobs)
「求知若渴、虛懷若愚」
Stay Hungry, Stay Foolish

逆光飛翔
閉上眼睛,跟你一起去感覺....
在沒有光的世界裡,踏出的每一步,都需要很大的勇氣。
我想每個人的存在,都是有他的原因。
因為有你,讓我相信我所遭遇的一切,並不是要阻擋我的前進,
而是要讓我下定更大的決心,謝謝有你,讓我明白....
如果對喜歡的事情,沒有辦法放棄,那就要更努力地....
讓別人看到自己的存在!


quitter never wins
放棄的人,永遠都不會贏

2015年10月22日 星期四

【GIS】坐標說明 待續

【GIS】坐標 說明 續

WGS84 經緯度 坐標 GOOGLE
121.04764
22.70989

二度分帶
254894.05988986
2512157.98585868

2015年10月19日 星期一

【身活分享】香水事項

同事分享

CK one + MONTBLANC Legend 萬寶龍傳奇經典男性淡香水

蠻不錯聞的

2015年10月14日 星期三

【公開資料】行政區域及「村、里」代碼

行政院主計總處

【行政區域及村里代碼】

網址:http://www.dgbas.gov.tw/ct.asp?xItem=951&ctNode=5485

excel:http://www.dgbas.gov.tw/public/data/dgbas03/bs1/行政區域及村里代碼/各縣市及直轄市/村里-all.xls


XML格式:http://www.dgbas.gov.tw/public/data/open/stat/village.xml
PS.比較官網EXCEL舊三個月

單位:政府資料開放平台
http://data.gov.tw/node/10925/


以上 行政院主計總處資料 為統一公開單位

2015年10月4日 星期日

【音樂分享】緣分天注定、美國情緣 - 原聲帶曲目

很美麗的音樂,大家可以去找找

緣分天注定、美國情緣 - 原聲帶曲目

Various Artists - Serendipity (OST)  配樂

01 Wood - Never A Day
02 Bap Kennedy - Moonlight Kiss --夜晚的相聚
03 David Gray - January Rain -- 結尾 遇見彼此 前配樂
04 Annie Lennox,Steven Lipson - Waiting In Vain --等待的啟發
05 Evan And Jaron - The Distance (Serendipity Version) --結尾 end 2
06 Heather Nova - Like Lovers Do
07 Shawn Colvin - When You Know  --當下知道
08 Nick Drake - Northern Sky --結尾 遇見彼此
09 Louis Armstrong - Cool Yule--開頭
10 Chantal Kreviazuk - This Year--結尾 end 1
11 Brian Whitman - (There's) Always Something There To Remind Me
12 John Mayer - 83
13 Alan Silvestri - Fast Forward --尋尋覓覓

Alan Silvestri - Serendipity (Score)

01 Serendipity Chat
02 Ice-Skating
03 Jonathan's Theme
04 Elevator Maze - Sara Is Gone
05 Time Lapse Montage
06 The Bookseller
07 The Bookstore Search
08 Lars' Theme
09 Flight Tickets
10 The Golf Range (alternate)
11 Mr. Mignon's Painting
12 A Bridal Shop
13 Hotel Lobby
14 Watching Caroline in Lars' House
15 Sara Rushes to the Wedding
16 The Obituary
17 Reprise

2015年8月21日 星期五

【自我人生規劃】程式、硬體 之選擇之路

來到公司從不會寫程式到會寫程式

感謝公司的栽培

但不是自己有興趣也不會待在這家公司四年多

學很多.也能出去混個一官半職

但我的個性最後真的比較偏好外勤與人互動

有想轉換跑道做外勤工程師

問了前主管,給我回應是:勞力與腦力 自己選

問了系統工程師,給我的回應:當初如我是寫程式就好,勞力好辛苦

問了主管,給我的回應是:你應該去當PM

我總結了一段話,也不算找到答案,因為答案常變

總語:

人生與身材,無論是橫向發展、還是直向發展,無論是勞力還是腦力

數十載光陰...規劃趕不上計劃...樂觀悲觀不如隨著心走吧...

雖然未來還要養兒育女...咱們活的開心比較重要...


以上

我的新筆名叫:人生七劃

2015年8月19日 星期三

【夢的故事】多少次輪迴,才來到今生

主題:多少次輪迴,才來到今生

鞋子

女人

孩子

白婚紗

交換鞋子

車禍

中正大學

碩士班

手機

當兵

晚上

吵鬧

回想

故事

鬼門開

尋找今生的我

2015年8月9日 星期日

【美食好推】龍記搶鍋麵

有機會去吃吃看


新聞報導:https://www.youtube.com/watch?t=11&v=rLKL3gFO2CI
文章報導:http://machico.pixnet.net/blog/post/26145862-%E8%A1%A1%E9%99%BD%E8%B7%AF%E6%91%B8%E4%B9%B3%E5%B7%B7%E4%B9%8B%E3%80%8C%E9%BE%8D%E8%A8%98%E6%90%B6%E9%8D%8B%E9%BA%B5%E3%80%8D

龍記搶鍋麵
營業時間:10:30~14:30 / 16:00~20:30

台北市衡陽路84巷5號

2015年7月2日 星期四

【ASP.NET】透過 xslt to xls 匯出 excel 在 excel 2003 問題


透過 xslt to xls 匯出excel 在 excel 2003 問題

合併的時候會多出以下字串



但在OFFICE 2003 excel 不認識它,

所以、必需要 replace 掉,

否則開出來是白空的excel

2015年5月5日 星期二

2015年1月15日 星期四

【JavaScript 】臺灣 身份證驗證


function gfcChkIdCard(pUserID) {
    var tobjRtn = new Object();  //-傳回Object
    var ixI;
    var tAreaNo;
    var tSum;
    var tAreaCode;
    var tSecondID;         //身份證第二碼

    if (pUserID == "" || pUserID == null) {
        tobjRtn.eErr = false;
        return tobjRtn;
    }
    tobjRtn.eErr = true;
    pUserID = pUserID.toUpperCase();
    if (pUserID.length != 10)//確定身份證字號有10碼
    {
        tobjRtn.eErrDesc = "輸入無效的身份證字號 (ex:資料長度錯誤) !";
        return tobjRtn;
    }
    tAreaCode = pUserID.substr(0, 1);
    if (tAreaCode.valueOf() < "A" || tAreaCode.valueOf() > "Z")//確定首碼在A-Z之間
    {
        tobjRtn.eErrDesc = "輸入無效的身份證字號 (ex:首碼應介於A-Z之間) !";
        return tobjRtn;
    }
    if (isNaN(parseInt(pUserID.substring(1, 10), 10)) == true) //確定2-10碼是數字
    {
        tobjRtn.eErrDesc = "輸入無效的身份證字號 (ex:第2-10碼須是數字) !";
        return tobjRtn;
    }
    //身份證號碼第 2 碼必須為 1 或 2
    tSecondID = pUserID.substr(1, 1);
    if (tSecondID != "1" && tSecondID != "2") {
        tobjRtn.eErrDesc = "輸入無效的身份證字號 !";
        return tobjRtn;
    }
    //取得首碼對應的區域碼,A ->10, B->11, ..H->17,I->34, J->18...
    tAreaNo = "ABCDEFGHJKLMNPQRSTUVXYWZIO".search(tAreaCode) + 10;
    pUserID = tAreaNo.toString(10) + pUserID.substring(1, 10);

    //  取得CheckSum的值
    //  核對身份證號碼是否正確
    //  A  = 身份證號碼區域碼第 1碼
    //  A0 = 身份證號碼區域碼第 2碼 * (10 - 1)
    //  A1 = 身份證號碼第 2碼 * (10 - 2)
    //  A2 = 身份證號碼第 3碼 * (10 - 3)
    //  A3 = 身份證號碼第 4碼 * (10 - 4)
    //  A4 = 身份證號碼第 5碼 * (10 - 5)
    //  A5 = 身份證號碼第 6碼 * (10 - 6)
    //  A6 = 身份證號碼第 7碼 * (10 - 7)
    //  A7 = 身份證號碼第 8碼 * (10 - 8)
    //  A8 = 身份證號碼第 9碼 * (10 - 9)
    //  CheckSum = A + A0 + A1 + A2 + ........ + A7 + A8

    tSum = parseInt(pUserID.substr(0, 1), 10) + parseInt(pUserID.substr(10, 1), 10);

    for (ixI = 1; ixI <= 9; ixI++) {

        tSum = tSum + parseInt(pUserID.substr(ixI, 1), 10) * (10 - ixI);

    }

    if ((tSum % 10) != 0) {
        tobjRtn.eErrDesc = "輸入無效的身份證字號 !";
        return tobjRtn;
    }
    tobjRtn.eErr = false;
    return tobjRtn;
}

2014年10月16日 星期四

【Jquery】jquery.validate.js 取消驗證 Cancel 按鈕

驗證欄位工具

Jquery 外掛:

jquery.validate.js

button Control
屬性  新增一個:UseSubmitBehavior="True"

就可以了不用驗證

用徒在於:

送出、取消

取消 按鈕上使用

2014年10月9日 星期四

【MS SQL 資料庫 trigger 】 查詢 觸發事件 資料


 SCHEMA_NAME(tb.schema_id) N'結構描述', OBJECT_NAME(t.parent_id) N'資料表', t.name N'觸發程序名稱', parent_class_desc N'觸發程序父類別的描述',
 t.type_desc N'物件類型的描述',  tEV.type_desc '引發觸發程序的每個事件', is_instead_of_trigger N'是否為 INSTEAD OF 觸發程序'
FROM sys.triggers t INNER JOIN sys.trigger_events tEV ON t.object_id = tEV.object_id
 INNER JOIN sys.tables tb ON t.parent_id = tb.object_id

德瑞克
轉載:http://sharedderrick.blogspot.tw/2013/08/dml-trigger.html

2014年10月7日 星期二

【JAVASCRIPT,JQUERY】依據不同的瀏覽器,取得 XMLHttpRequest 物件

// 依據不同的瀏覽器,取得 XMLHttpRequest 物件
function createAJAX() {

if (window.ActiveXObject) {
try{
//alert('msx');
return new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
//alert(e.description);
try {
//alert('micro');
return new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
//alert(e.description);
//alert('null0');
return null;
}
}
//alert('active');
} else if (window.XMLHttpRequest) {
//alert('xmlhttp');
return new XMLHttpRequest();
} else {
//alert('null');
return null;
}
}

2014年9月26日 星期五

【ASP.NET】透過 JQUERY JSON AJAX 呼叫 asp.net WEB service 問題(POST 跟 GET )

透過  JQUERY  JSON  AJAX  呼叫  Asp.net WEB service 問題(POST 跟 GET )

但發佈上去後,別人電腦透過網址連線,卻發生 問題

在chrome 錯誤訊息說什麼找不到 IIS 500 訊息

但在本機卻都沒問題

jquery 程式如下:

    function callHellWord() {
        $.ajax({
            type: "POST",
            url: "http://XXXX.XXXX.XXXX.tw/service/XXXXXX.asmx/ApplyWifi",
            contentType: "application/json; charset=utf-8",
            dataType: "text",
            success: function(data) {
    alert('ok');
            }
        });
    }

一、原來問題出在 web.config 上

二、因為路徑問題,所以URL 要完整路徑
只要加上 允許 部份就可以了,預設是關閉
   
WEB.CONFIG 官方參考網址: http://msdn.microsoft.com/zh-tw/library/aa719747(v=vs.71).aspx

2014年9月24日 星期三

【知識分享】Word 2010 A3 列印 轉 A4 紙張

【知識分享】Word 2010 A3 列印 轉換  A4 紙張

當內容版型是A3

如果縮小 成 A4 紙張

功能如下方:


2014年9月21日 星期日

【VS 2010 】vs2010 工具箱 標準項目 不見

【VS 2010 】 Microsoft Visual Studio 2010

vs2010 工具箱 內 標準 項目 不見

【為何不見】
軟微更新動到 一些設定


【如何恢復】
你的 vs2010 的捷徑
 右鍵\相容性
把相容性 勾勾取消掉


就搞定了




2014年9月11日 星期四

【生活知識】 從 1加到99 是多少? 教學

YHAOO 神人 (魷魚絲) 教學

運用 梯形公式
(上底+下底)×高 ÷ 2
= (1+99)×99     ÷2
= 100 ×99     ÷2
= 9900     ÷2
= 4950


這個公式還蠻好記的

2014年8月28日 星期四

【ASP.NET】時間 GET TIME

// create date time 2008-03-09 16:05:07.123
DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123);

String.Format("{0:y yy yyy yyyy}", dt);  // "8 08 008 2008"   year
String.Format("{0:M MM MMM MMMM}", dt);  // "3 03 Mar March"  month
String.Format("{0:d dd ddd dddd}", dt);  // "9 09 Sun Sunday" day
String.Format("{0:h hh H HH}",     dt);  // "4 04 16 16"      hour 12/24
String.Format("{0:m mm}",          dt);  // "5 05"            minute
String.Format("{0:s ss}",          dt);  // "7 07"            second
String.Format("{0:f ff fff ffff}", dt);  // "1 12 123 1230"   sec.fraction
String.Format("{0:F FF FFF FFFF}", dt);  // "1 12 123 123"    without zeroes
String.Format("{0:t tt}",          dt);  // "P PM"            A.M. or P.M.
String.Format("{0:z zz zzz}",      dt);  // "-6 -06 -06:00"   time zone


// month/day numbers without/with leading zeroes
String.Format("{0:M/d/yyyy}", dt);            // "3/9/2008"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"

// day/month names
String.Format("{0:ddd, MMM d, yyyy}", dt);    // "Sun, Mar 9, 2008"
String.Format("{0:dddd, MMMM d, yyyy}", dt);  // "Sunday, March 9, 2008"

// two/four digit year
String.Format("{0:MM/dd/yy}", dt);            // "03/09/08"
String.Format("{0:MM/dd/yyyy}", dt);          // "03/09/2008"