/// <summary>
 /// 获取TOKEN
 /// </summary>
 /// <returns></returns>
 public virtual bool GetToken()
 {
     if (string.IsNullOrEmpty(UserID) && string.IsNullOrEmpty(Password))
     {
         throw new Exception("没有提供用户名和密码,不能获取Token ");
     }
     using (var client = new GZipWebClient())
     {
         string url = RepoUri.TrimEnd('/') + "/" + "tokens/";
         client.Encoding = System.Text.Encoding.UTF8;
         client.Headers.Add("accept", "application/json;charset=utf-8");
         client.Headers.Add("content-type", "application/json;charset=utf-8;");
         var ts      = GetTimestamp(DateTime.Now);
         var content = JsonConvert.SerializeObject(new
         {
             userid    = UserID,
             password  = Password,
             timestamp = ts,
         });
         var retBytes = client.UploadData(url, "POST", System.Text.ASCIIEncoding.UTF8.GetBytes(content));
         var ret      = JsonConvert.DeserializeObject <CommandResult <TokenInfo> >(System.Text.ASCIIEncoding.UTF8.GetString(retBytes));
         if (ret.Result == ResultCode.Successful && ret.Value != null)
         {
             TokenInfo.Tokens[RepoUri] = ret.Value;
             return(true);
         }
         throw new Exception("获取token失败 ");
     }
 }
 protected virtual string GetControllerUrl()
 {
     return(RepoUri.TrimEnd('/') + "/" + typeof(TEntity).Name + "s/");
 }