我试图使用SSH.NET从SFTP服务器异步下载文件.如果我同步执行它,它工作正常,但当我执行异步时,我得到空文件.这是我的代码:
var port = 22;
string host = "localhost";
string username = "user";
string password = "password";
string localPath = @"C:\temp";
using (var client = new SftpClient(host, port, username, password))
{
client.Connect();
var files = client.ListDirectory("");
var tasks = new List<Task>();
foreach (var file in files)
{
using (var saveFile = File.OpenWrite(localPath + "\\" + file.Name))
{
//sftp.DownloadFile(file.FullName,saveFile); <-- This works fine
tasks.Add(Task.Factory.FromAsync(client.BeginDownloadFile(file.FullName, saveFile), client.EndDownloadFile));
}
}
await Task.WhenAll(tasks);
client.Disconnect();
}
Run Code Online (Sandbox Code Playgroud) 我已经google了很多搜索我的问题的答案没有运气所以,让我们尝试,如果别人可以帮助我.
在进行一些验证后,我有一个Web Api 2操作来注册用户.如果一切正常,它将返回序列化用户,如果没有,则返回BadRequest响应中发送的错误消息.
另一方面,我有一个WPF客户端调用API进行响应.
我的问题是我无法得到错误发送的原因,客户端只是得到Bad Request错误消息.
这是代码的一部分:
Web Api动作:
public async Task<IHttpActionResult> AddUser(NewUserDTO {
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (!model.IdCliente.HasValue)
{
ModelState.AddModelError("", "No existe el cliente");
return BadRequest(ModelState);
}
// do save stuff
return Ok(TheModelFactory.Create(user));
}
Run Code Online (Sandbox Code Playgroud)客户端功能:
public async Task<ApplicationUserDTO> AddUser(NewUserDTO dto) {
using (var client = new HttpClient()) {
client.BaseAddress = new Uri(_urlBase);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", Token);
HttpContent content = new StringContent(JsonConvert.SerializeObject(dto));
content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
HttpResponseMessage responseMessage = await client.PostAsync("api/accounts/AddUser", content); …Run Code Online (Sandbox Code Playgroud)我有一个案例,我有一个对象的名称和一堆文件名.我需要将正确的文件名与对象匹配.文件名可以包含数字和单词,用连字符( - )或下划线(_)分隔.我无法控制文件名或对象名.例如:
10-11-12_001_002_003_13001_13002_this_is_an_example.svg
Run Code Online (Sandbox Code Playgroud)
在这种情况下,对象名称只是一个字符串,表示一个数字
10001
Run Code Online (Sandbox Code Playgroud)
如果文件名与对象名匹配,我需要返回true或false.文件名的不同段可以单独匹配,也可以两个段的任意组合匹配.在上面的例子中,对于以下情况应该是这样(不是每个真实情况,只是例子):
10001
10002
10003
11001
11002
11003
12001
12002
12003
13001
13002
Run Code Online (Sandbox Code Playgroud)
并且,我们应该为此案件(其中包括)返回false:
13003
Run Code Online (Sandbox Code Playgroud)
到目前为止我想出的是:
public bool IsMatch(string filename, string objectname)
{
var namesegments = GetNameSegments(filename);
var match = namesegments.Contains(objectname);
return match;
}
public static List<string> GetNameSegments(string filename)
{
var segments = filename.Split('_', '-').ToList();
var newSegments = new List<string>();
foreach (var segment in segments)
{
foreach (var segment2 in segments)
{
if (segment == segment2)
continue;
var newToken = segment + segment2;
newSegments.Add(newToken);
} …Run Code Online (Sandbox Code Playgroud) 我有一个应该显示项目列表的组件。首次加载组件时,将从API提取项目,然后应在用户单击按钮时刷新/替换项目。
问题是,我的组件似乎总是落后于用户一步。例如,用户第一次单击该按钮时,将调用API并返回新数据,但是该组件仍显示其在初始加载时获得的数据。用户第二次单击时,我的组件将显示第一次单击时返回的数据。
我认为单击按钮后即可快速将组件重新加载,因此显示组件时状态不会更新,但是我不知道如何解决?
我的组件:
import React, {Component} from 'react';
import {connect} from 'react-redux';
import {matchesFetchData} from '../actions/matches';
import Match from './match';
class MatchList extends Component {
constructor(){
super();
this.generateNew = this.generateNew.bind(this);
}
componentDidMount() {
this.props.fetchData('http://localhost:4752/api/matches');
}
render() {
if (this.props.hasErrored) {
return <p>Sorry!There was an error loading the items</p>;
}
if (this.props.isLoading) {
return <p>Loading…</p>;
}
return (
<div>
<nav className="menu">
<input type="number" defaultValue="0" min="0" max="13" ref="safeguards"/>
<button className="generateNew" onClick={this.generateNew}>Ny</button>
</nav>
<ul className="matchlist">
{this.props.matches.map(function (match, index) {
return <Match key={index} …Run Code Online (Sandbox Code Playgroud) c# ×3
.net ×1
asynchronous ×1
bad-request ×1
javascript ×1
react-redux ×1
reactjs ×1
response ×1
sftp ×1
ssh.net ×1