小编Jak*_*ote的帖子

在TeamCity powershell脚本中更新变量

我正在尝试使用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)

powershell teamcity teamcity-8.0

20
推荐指数
1
解决办法
9872
查看次数

读取请求正文两次

我试图在中间件中读取正文以进行身份​​验证,但是当请求到达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)

asp.net-core-mvc asp.net-core asp.net-core-webapi

19
推荐指数
2
解决办法
1万
查看次数

在C#WebApi中直播FLV

目前我有一个使用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)

c# flv ffmpeg stream asp.net-web-api

16
推荐指数
1
解决办法
876
查看次数

具有泛型类型的名称

我试图在通用接口上获取方法的名称.我希望这可以工作,因为类型部分将是一个有效的类型:

//This does not compile
nameof(IGenericInterface<>.Method)

//This would compile
typeof(IGenericInterface<>)
Run Code Online (Sandbox Code Playgroud)

我认为这应该是有效的C#6或者我错过了什么或者是他们更好的方法来做到这一点.我不想为方法名称使用字符串,就好像方法被重命名代码会破坏而没有任何构建时错误.

c# generics c#-6.0

15
推荐指数
2
解决办法
4626
查看次数