我有一个构建配置,其中包含一个连接到git分支的测试VCS根目录dev,3个构建步骤和1个触发器.这些是我的构建步骤:
我想为分支运行所有这些构建步骤,dev但只有两个(构建和运行测试)用于分支匹配feature/*.我希望在我的构建配置下显示它.因此,构建配置具有dev运行测试和部署的默认分支,但feature/*附加分支仅运行测试.
我怎样才能做到这一点?
如果我添加/refs/heads/(feature/*)到分支规范(默认分支下面),这可以很好地工作,但它总是部署 - 我不想要.

编辑1:似乎有一个可用的变量可用%teamcity.build.branch%.但是如何在部署步骤中执行条件检查以检查分支是否为dev分支.我不确定.
编辑2:还有一个变量名称%vcsroot.branch%,它是VCS根目录中默认分支的名称.所以我们仍然需要一个检查%teamcity.build.branch%变量是否等于的条件%vcsroot.branch%,然后运行部署步骤.
我有一个JavaScript应用程序和一个API,用于创建Excel文件并返回带有以下标题的字节数组:
Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Content-Disposition:attachment; filename=List.xlsx
Run Code Online (Sandbox Code Playgroud)
当我转到Excel资源API URL时,系统会提示我下载Excel文件.如果我这样做,它下载正常并在Excel中打开.一切都很好.
现在来问题:
我不想要的是在用户的浏览器窗口中公开API URL,所以我的目标是:
我有的是这个:
它下载文件,但是当我尝试打开文件时,Excel不会将其识别为有效的Excel文件.
// "data" is the contents from the server
var reader = new FileReader();
var blob = new Blob([data], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });
reader.readAsDataURL(blob);
reader.onloadend = function (e) {
window.open(reader.result, 'Excel', 'width=20,height=10,toolbar=0,menubar=0,scrollbars=no', '_blank');
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在我的应用程序中设置一个cookie.
这是设置cookie的代码:
public HttpResponseMessage LogIn(UserLoginVM user)
{
// Do login stuff
var cookie = new CookieHeaderValue("STUPID-COOKIE", "12345");
cookie.Domain = Request.RequestUri.Host;
cookie.Path = "/";
cookie.HttpOnly = true;
// Get user's profile
HttpResponseMessage res = Request.CreateResponse<UserProfileVM>(HttpStatusCode.OK, profile);
res.Headers.AddCookies(new CookieHeaderValue[] { cookie });
return res;
}
Run Code Online (Sandbox Code Playgroud)
服务器的响应如下:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
Set-Cookie: STUPID-COOKIE=12345; domain=localhost; path=/; httponly
Access-Control-Allow-Origin: *
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcUFJPSkVDVFNcU2Ftc2tpcC5TZXJ2aWNlV2ViTmV3XFNhbXNraXAuQXV0aEFQSVxTYW1za2lwLkF1dGhBUElcbG9naW4=?=
X-Powered-By: ASP.NET
Date: Wed, 18 Feb 2015 11:58:07 GMT
Content-Length: 8019 …Run Code Online (Sandbox Code Playgroud) 当我DeleteAsync在HttpClient (System.Net.Http)中使用函数并检索内容时,Content.ReadAsStringAsync()我总是null返回.
我已经尝试了相同的GET,POST并且PUT- 并且他们总是返回一些结果.
这是我的代码:
HttpClient _client = new HttpClient();
_client.BaseAddress = new Uri("http://httpbin.org/");
_client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = _client.DeleteAsync("/delete").Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
Run Code Online (Sandbox Code Playgroud)
我总是null回来.
但是,所有这些都有效:
得到:
HttpResponseMessage response = _client.GetAsync("/get").Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
Run Code Online (Sandbox Code Playgroud)
POST:
HttpResponseMessage response = _client.PostAsync("/post", new StringContent(JsonConvert.SerializeObject(obj), Encoding.UTF8, "application/json")).Result;
string res = await response.Content.ReadAsStringAsync();
return await JsonConvert.DeserializeObjectAsync<T>(res);
Run Code Online (Sandbox Code Playgroud)
放:
HttpResponseMessage response = …Run Code Online (Sandbox Code Playgroud) 我正在使用UI-Select 0.8.4并拥有大量数据集.然后我使用UI-Select在数据集旁边的下拉列表中显示属性值.我正在使用它来过滤器.因此,从下拉列表中选择时,将过滤结果.
每次当我将鼠标悬停在下拉列表中的某个项目上时,它始终会触发ng-repeat过滤器.
这是滞后于我的应用程序,因为我正在使用ng-repeat中的大集合.
为什么是这样?
GIF:http: //i.imgur.com/cStlXzy.gif
Plunker (打开控制台并亲眼看看):http: //plnkr.co/edit/OxiutZ8t4IX1bOxiOTgo?p = preview
HTML:
<h3>Age list</h3>
<p>Selected: {{age.selected}}</p>
<ui-select ng-model="age.selected" ng-disabled="disabled" style="width: 300px;">
<ui-select-match placeholder="Select a person">{{$select.selected}}</ui-select-match>
<ui-select-choices repeat="age in ageArray | filter: $select.search">
<div ng-bind="age | highlight: $select.search"></div>
</ui-select-choices>
</ui-select>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$scope.theFilter = function(item) {
console.log(item);
return item;
};
$scope.ageArray = [];
$scope.$watch('people', function(item) {
for(var i = 0; i < item.length; i++) {
$scope.ageArray.push(item[i].age);
}
});
$scope.people = [
{ name: 'Adam', email: …Run Code Online (Sandbox Code Playgroud) 我有一个 Web 客户端和几个 Web 服务(以及一个身份验证服务)。我web-test.domain.com在services-test.domain.com.
为了调试,我在本地运行了一些Web 服务。但问题是当我在本地运行 auth 服务(设置 cookie 的地方)但其他人运行时services-test.domain.com,cookie(带有 sessionID)不会随请求一起发送到其他 Web 服务(因为它的域是localhost并且它们是不在本地运行),所以他们总是抛出一个401 Unauthorized异常,我会自动从网络上注销。
这是因为 auth 服务在 localhost 上运行,所以响应是一个 cookie,Domain=localhost但是当请求发送到其他 Web 服务时,没有发送 cookie,因为它是 httpOnly localhost cookie。导致其他 Web 服务认为我没有登录。
有什么方法可以在本地运行身份验证服务并获得跨域工作的 httpOnly cookie(对于 localhost 和 services-test.domain.com)
在使用 httpOnly 域特定 cookie 时,在本地开发、调试和运行 auth 服务时,您是如何做到这一点的?
这是演示问题的图像:

可能的解决方案:
web-test.domain.com,登录并获取该域(会话 A)的 cookie。然后登录本地运行的服务并获取 localhost(会话 B)的 cookie。然后会话 A 将用于所有外部服务,会话 B 将用于所有本地服务。services-test.domain.com到/etc/hosts文件,以便为该域设置 …如何在Play中调用控制器方法!模板?
我有一个默认控制器,Application和该控制器内的hasliked()方法.该方法返回登录用户是否喜欢帖子ID.如果用户喜欢帖子,则返回"none",否则返回"block"(对于CSS)
我添加了以下路由:GET/hasliked/{id} Application.hasliked
我尝试了以下方法:
#{list items:postList, as:'post'}%{display = Application.hasliked(post.id); %}
<div style="display: ${display}">...</div>#{/list}
但我得到这个错误:
模板执行错误
模板/app/views/Application/dashboard.html中发生执行错误.引发的异常是NullPointerException:无法在null对象上调用方法hasliked().
这可能是一个简单的问题,但我遇到了这个日期选择器的问题.问题是我将格式设置为dd/mm/yyyywith data-date-format属性.但是,检查我ng-model的值时如下:Wed Jul 17 2013 00:00:00 GMT+0000 (Greenwich Standard Time)
我想要的是绑定到dd/mm/yyyy格式.
我怎样才能解决这个问题?
这是我的代码:
<label for="inputDateFrom">Frá</label>
<div class="control-group input-append">
<input type="text" ng-model="booking.Booking.DateFrom" data-date-format="dd/mm/yyyy" bs-datepicker>
<button type="button" class="btn" data-toggle="datepicker"><i class="icon-calendar"></i></button>
</div>
Run Code Online (Sandbox Code Playgroud)
更新18.07.13:
根据rGil的回答,我尝试使用$ scope.$ watch.它工作正常,但首先它获得CORRECT日期(来自getBooking()服务函数),然后它更改为CURRENT日期 - 这不是日期.
JavaScript代码如下:
$scope.$watch('booking.Booking.DateFrom', function(v){ // using the example model from the datepicker docs
$scope.booking.Booking.DateFrom = moment(v).format();
alert(moment(v).format());
});
$scope.$watch('booking.Booking.DateTo', function(v){ // using the example model from the datepicker docs
$scope.booking.Booking.DateTo = moment(v).format();
alert(moment(v).format());
});
// Sækjum …Run Code Online (Sandbox Code Playgroud) 我正在尝试在UI引导程序中的typeahead中实现显示更多结果功能.最初它应该加载5个结果,然后如果结果超过5我想显示一个显示更多结果选项以再次从API加载所有结果(没有限制).
这是我在模板中的预先定义:
<input type="text" name="FullName" id="FullName"
class="form-control" autocomplete="false" required="required"
placeholder="Search by name"
uib-typeahead="ent as ent.FullName for ent in vm.findEntities($viewValue)"
typeahead-popup-template-url="entityPopup.tpl.html"
typeahead-template-url="popupMatch.tpl.html"
typeahead-on-select="vm.entitySelected($item)"
ng-model="vm.FullName">
Run Code Online (Sandbox Code Playgroud)
我在父 - 父控制器中有一个变量,其中包含结果的计数.$parent.$parent.vm._entityTotalResults.如果该计数超过5,那么我想显示一个" 显示更多"按钮,该按钮可以加载更多结果并将其填充到预先输入结果中.
我entityPopup.tpl.html的内容如下:
只是添加了一个的默认值 <li></li>
<ul class="dropdown-menu" ng-show="isOpen() && !moveInProgress" ng-style="{top: position().top+'px', left: position().left+'px'}" style="display: block;" role="listbox" aria-hidden="{{!isOpen()}}">
<li ng-repeat="match in matches track by $index" ng-class="{active: isActive($index) }" ng-mouseenter="selectActive($index)" ng-click="selectMatch($index)" role="option" id="{{::match.id}}">
<div uib-typeahead-match index="$index" match="match" query="query" template-url="templateUrl"></div>
</li>
<li ng-show="$parent.$parent.vm._entityTotalResults > 5">SHOW MORE</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我的先行功能 …
angularjs bootstrap-typeahead angular-ui-bootstrap angular-ui-typeahead
我将替换$http为Fetch API,然后将其替换$q为Promise API。因此,Angular不再运行摘要循环,因此UI无法呈现。为了解决这个问题,我尝试了Zone.js,这似乎可以部分解决我们的问题。不幸的是,其API在0.6中已完全更改,因此我们使用的是旧版0.5.15。
现在到实际问题了。
刷新页面时,Angular会按预期进行配置和引导应用程序。在这个阶段,我初始化区和装饰$rootScope.apply用区和$rootScope.$digest()。现在,当我在状态/路由(使用ui-router)之间进行转换时,一切都按预期工作,但是当完全刷新时,就会出现竞争状况,并且区域/摘要无法正确运行。我不确定如何解决。
我在angular.run()块中包含以下代码:
console.log('Zone setup begin');
const scopePrototype = $rootScope.constructor.prototype;
const originalApply = scopePrototype.$apply;
const zoneOptions = {
afterTask: function afterTask() {
try {
$rootScope.$digest();
} catch (e) {
$exceptionHandler(e);
throw e;
}
}
};
scopePrototype.$apply = function $applyFn() : void {
const scope = this;
const applyArgs = arguments;
window.zone.fork(zoneOptions).run(() => {
originalApply.apply(scope, applyArgs);
console.log('Zone + $digest run!');
});
};
console.log('Zone setup end');
Run Code Online (Sandbox Code Playgroud)
在上方可以看到我在区域初始化开始,结束和运行时(+ …
javascript angularjs angularjs-http angular-promise fetch-api
angularjs ×4
javascript ×3
cookies ×2
localhost ×2
.net ×1
asp.net-mvc ×1
async-await ×1
blob ×1
c# ×1
datepicker ×1
excel ×1
fetch-api ×1
filereader ×1
git ×1
httpclient ×1
java ×1
json.net ×1
rest ×1
teamcity ×1
ui-select ×1
ui-select2 ×1
web-services ×1