2015年1月26日 星期一

IIS Web Api 405 - 不允許用來存取此網頁的 HTTP 指令動詞

今天終於將AngularJs + web api基本的CRUD寫好了包括一下未來可能會遇到功能
發怖到了IIS主機後才發現無法修改及刪除
因為網頁原本就只有Get Post,但沒有Put跟Delete兩種 網站上有許多方法及相關解法
例如設定WebDAV等等..試了也沒用
找了一篇如下參考網站直接修改WebConfig
找到如下
<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
.....
修改成
 
<system.webServer>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" >
      <remove name="WebDAVModule" />
    </modules>
.....
.....以下空的
參考網站
405 Method Not Allowed using ASP.NET Web API

2015年1月22日 星期四

Angular 搭配Web Api回傳問題

今天遇到的問題是使用angularjs抓取web api
在一開始都沒問題網路上很多範例如下
js部份
    $http.get('/url').success(function (data, status, headers, config) {
        $scope.datalists = data;
    })
    .error(function (data, status, headers, config) {       
        $scope.error = "Error!!";
    });
web api .cs部份 vs自動產生很快吧!!
 public IEnumerable Get()
{       
  return  db.Sys_Domain.AsEnumerable();       
}
但是其實這個table join了很多Table當被join的table裡開始有資料時就會有錯誤
找了許多方式修改了web api
      public HttpResponseMessage Get()
        {
            List<Sys_Domain> data = new List<Sys_Domain>();
            foreach (var item in db.Sys_Domain)
            {
                Sys_Domain Row = new Sys_Domain()
                {
                   //todo
                };
                data.Add(Row);
            }
            return Request.CreateResponse(HttpStatusCode.OK, data);
        }
就可以正常的回傳了剛學習,如有更好的方式再請大家多指教!!

2015年1月15日 星期四

Angular 分頁

最近又開始使用AngularJS之前有練習過,但沒機會實戰
目前開始建構一個專案主要使用AngularJS
原文網址
show more , prev and next , pager
jsfiddle
show more , prev and next , pager
早上測試一下套用的方式相當簡單一下就套上了分享給大家
加入filter
Angularjs - Pagination appear after search filter

2015年1月14日 星期三

Visual Studio Entity Framework 設定連線字串問題

繼之前連線字串加密問題後
今天使用vs2013開發新增一個ADO .net 實體模型
後來無法自定連線字串
找了一下 有關Entity Framework在程式中給連線字串這篇也遇到同樣的問題
後來與同事討論有幾種改法
1.修改xxx.Context.cs
 public xxxEntities()
   : base("name=xxxEntities")
{
}
把name=xxxEntities改成需要的conectionstring如果有加解密可以寫一個function去呼叫
這樣就沒事了嗎錯!!!
如果model改了剛寫的都白寫了

2.修改xxx.Context.tt
修改範本方式找到以下做修改成需要的
但如果不是很有把握千萬別亂修改
找到如下
public <#=code.Escape(container)#>()
        : base("name=<#=container.Name#>")
    {
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
        this.Configuration.LazyLoadingEnabled = false;
<#
}
#>
    }
修改成
 public <#=code.Escape(container)#>()
        : base(你要的function)
    {
<#
if (!loader.IsLazyLoadingEnabled(container))
{
#>
        this.Configuration.LazyLoadingEnabled = false;
<#
}
#>
    }
有更好的解法再等大家提供喔!!