我正在尝试使用Powershell脚本更新TeamCity中的环境变量.但是,它不会更新变量的值.我怎样才能做到这一点?
下面是我当前获得currentBuildNumber的代码:
$currentBuildNumber = "%env.currentBuildNumber%"
$newBuildNumber = ""
Write-Output $currentBuildNumber
If ($currentBuildNumber.StartsWith("%MajorVersion%") -eq "True")
{
$parts = $currentBuildNumber.Split(".")
$parts[2] = ([int]::Parse($parts[2]) + 1) + ""
$newBuildNumber = $parts -join "."
}
Else
{
$newBuildNumber = '%MajorVersion%.1'
}
//What I have tried
$env:currentBuildNumber = $newBuildNumber
Write-Host "##teamcity[env.currentBuildNumber '$newBuildNumber']"
Write-Host "##teamcity[setParameter name='currentBuildNumber' value='$newBuildNumber']"
Run Code Online (Sandbox Code Playgroud) 我试图在中间件中读取正文以进行身份验证,但是当请求到达api控制器时,对象是空的,因为正在读取正文.有没有办法解决.我正在中间件中读这样的身体.
var buffer = new byte[ Convert.ToInt32( context.Request.ContentLength ) ];
await context.Request.Body.ReadAsync( buffer, 0, buffer.Length );
var body = Encoding.UTF8.GetString( buffer );
Run Code Online (Sandbox Code Playgroud) 目前我有一个使用webapi的工作实时流.通过直接从ffmpeg接收flv流并使用PushStreamContent将其直接发送到客户端.如果在流启动时网页已经打开,则此工作完全正常.问题是当我打开另一个页面或刷新此页面时,您无法再查看该流(该流仍然正在被发送到客户端).我认为这是由于流的开头缺少一些东西,但我不知道该怎么办.任何指针都将非常感激.
客户端读取流的代码
public class VideosController : ApiController
{
public HttpResponseMessage Get()
{
var response = Request.CreateResponse();
response.Content = new PushStreamContent(WriteToStream, new MediaTypeHeaderValue("video/x-flv"));
return response;
}
private async Task WriteToStream( Stream arg1, HttpContent arg2, TransportContext arg3 )
{
//I think metadata needs to be written here but not sure how
Startup.AddSubscriber( arg1 );
await Task.Yield();
}
}
Run Code Online (Sandbox Code Playgroud)
用于接收流然后发送到客户端的代码
while (true)
{
bytes = new byte[8024000];
int bytesRec = handler.Receive(bytes);
foreach (var subscriber in Startup.Subscribers.ToList())
{
var theSubscriber = subscriber;
try
{ …Run Code Online (Sandbox Code Playgroud) 我试图在通用接口上获取方法的名称.我希望这可以工作,因为类型部分将是一个有效的类型:
//This does not compile
nameof(IGenericInterface<>.Method)
//This would compile
typeof(IGenericInterface<>)
Run Code Online (Sandbox Code Playgroud)
我认为这应该是有效的C#6或者我错过了什么或者是他们更好的方法来做到这一点.我不想为方法名称使用字符串,就好像方法被重命名代码会破坏而没有任何构建时错误.
c# ×2
asp.net-core ×1
c#-6.0 ×1
ffmpeg ×1
flv ×1
generics ×1
powershell ×1
stream ×1
teamcity ×1
teamcity-8.0 ×1