發表文章

目前顯示的是 三月, 2014的文章

使用VisualStudio建置事件及xcopy快速分類輸出的檔案

圖片
前言   目前在內部建立了一組專案樣板的Nupkg,若要發佈更新時,我的步驟是先發行專專輸出到目錄,並作了以下動作:
1.複製dll到nupkg的lib目錄
2.複製其他所需內容 如:js,css等內容檔到nuget的content目錄
Ps:在作第2點時會需要先將目錄內的一些非必要檔案移除


Nuget package發行自訂的組態設定

圖片
前言   在 前一篇介紹的"透過Nuget Package Explorer建立內部的Nupkg"後,若是想在使用者安裝後加入自訂的組態設定,可以使用以下方法:

透過Nuget Package Explorer建立內部的Nupkg

圖片
1.請先到以下連結下載安裝http://npe.codeplex.com/2.安裝後執行會跳出視窗,選擇建立新的nupkg

SingalR基本應用筆記

練習功能 1.Web Client to Web Client-->Products/Index.cshtml Script區段 2.Web Client to Win From-->需從Nuget加入Microsoft.AspNet.SignalR.Client 3.Web Server to Web Client-->需透過GlobalHost.ConnectionManager取得已在執行的Hub 例: IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MyHub>(); 參考文章
http://getpocket.com/a/read/576724256範例下載
https://github.com/kimx/SignalRLab

在SilverLight執行Native dll的方法

圖片
若想要叫用Client端Win32 Api的話可以使用DllImport的方法叫用 如下:
[DllImport("User32.dll")]
private static extern Boolean MessageBeep(uint beepType);
但若是透過自己寫的或ThirdParty的Native dll 則需使用Resource連結的方式
1.先將dll的屬性設為Resource及永遠複製

2.執行連結方法NativeDllHelper.SetupNativeDllFolder("TSCLIB.dll");
此程式碼請至原作者提供的檔案下載
https://github.com/cureos/nativedll
以上的執行在本機Localhost,127.0.0.1都不會有問題,但在有網域或電腦名稱的網域
會出現"呼叫機器碼失敗。方法必須是安全性關鍵或安全性安全關鍵才能呼叫機器碼"或
"System.Security.SecurityException: 不允許檔案作業。拒絕存取路徑"..等錯誤
這是因為這些方法的執行因安全性的限制一定要在OOB(Out Of Browswer)下執行。
參考文章
http://cureos.blogspot.tw/2011/09/pinvoke-bundling-native-dlls-in.html













ASP.NET WebApi 基本應用筆記

圖片
重點記錄:1.WebApi內的方法名稱不是重點,重點是Http的行為及參數名稱

2.使用Nuget套件:Microsoft.AspNet.WebApi.Client,使用HttpClient幫你包好Request、Response、序列化的方法範例下載https://github.com/kimx/WebApiLab/

佈署到IIS7出現403錯誤

圖片
如題執行時出現如下圖
環境:Windows 2008 R2
.Net 4.5
MVC 5.1

解決方法:在組態webServer的module加入runAllManagedModulesForAllRequests="true"

備註:參考其他文章是建議不要用此設定,改成自行加入UrlRoutingModule 如下
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition=""/>..
此設定作完後403不會再出現,但靜態檔案卻都讀不到……………..待續
參考文章
http://rahulgbhatia.wordpress.com/2013/05/28/asp-net-routing-with-iis-7-runallmanagedmodulesforallrequests-true/
http://www.britishdeveloper.co.uk/2010/06/dont-use-modules-runallmanagedmodulesfo.html












使用Code First Enabling Migrations增加欄位

圖片
今天在使用.net 4.5的Membership時,在ApplicationUser類別增加欄位後,執行註冊功能會出現
CodeFirst的錯誤如下圖



這是因為Membership是使用CodeFirst,在第一次執行會先幫你建好資料表,但之後類別若有異動欄位,則必須下指令告知來更新資料庫。

執行步驟如下:
1.先在"套件管理器主控台(Package Manager Console)"輸入 Enabling Migrationsps:此動作在專案只要執行一次



輸入完後在方案總管會看到Mirgrations目錄及第一次產生的類別
檔名結尾_InitialCreate.cs為依目前資料庫內產生的建立語法
Configurations.cs則為Mirgrations的設定檔

2.在類別增加欄位3.在"套件管理器主控台(Package Manager Console)"輸入 Add-Migrations firstPs:first為自訂的識別名稱


此時會看到Mirgrations目錄產生一個繼承DbMigration類別,並且已依照增加的欄位將語法產生此部份是讓你自行再客製用,單純加入欄位可以不用修改




4.最後需在下一個指令為Update-Database就會針對資料庫作建立欄位動作

執行完後檢查資料表,已將欄位加入,大功告成


    上述動作其實還可以簡化一些,在Configuration.cs有一個AutomaticMigrationsEnabled的屬性只要設為true後,在類別的欄位異動後執行第4步驟的Update-Database也可以達到同樣的效果,但這只適用較簡易的異動,複雜的異動還是透過DbMigration來客製會比較好。

參考文章
http://blog.sanc.idv.tw/2012/04/entity-framework-code-firstenabling.html

ASP.NET MVC使用User Profiler

圖片
1.預設在ASP.NET MVC不會有System.Web.Providers,所以需在Nuget主控台輸入
install-package "System.Web.Providers"

2.設定組態 <profiledefaultProvider="DefaultProfileProvider">
<providers>
<addname="DefaultProfileProvider"type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"connectionStringName="DefaultConnection"applicationName="/"/>
</providers>
</profile>
3.定義資訊


<properties>
<addname="ForeNames"type="System.String"/>
<addname="LastName"type="System.String"/>
<addname="Gender"type="System.String"/>
<groupname="Contact">
<addname="MobileNo"type="System.String"/>