gpt4 book ai didi

c# - 该流不支持并发 IO 读取或写入操作

转载 作者:行者123 更新时间:2023-11-30 23:03:57 30 4
gpt4 key购买 nike

我试图在 Stack Overflow 的其他地方搜索这个问题,但找不到合适的答案,因此在这里发布我的问题。下面是我的代码,基本上我试图从文件中读取内容并将其发布到 web api,然后对另一个文件重复相同的步骤。第一次调用通过,但第二次调用失败并出现错误:

此行不支持流的并发 IO 读取或写入操作 requestStream.Write(buffer, 0, bytesRead);

能告诉我我做错了什么吗?

using(FileStream fs = new FileStream(@ "C:\Test1.txt", FileMode.Open, FileAccess.Read)) {

byte[] buffer = null;
int bytesRead = 0;
using(Stream requestStream = request.GetRequestStream()) {
buffer = new Byte[checked((uint) Math.Min(1024, (int) fs.Length))];
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0) {
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Flush();
}
}
using(FileStream fs = new FileStream(@ "C:\Test2.txt", FileMode.Open, FileAccess.Read)) {

byte[] buffer = null;
int bytesRead = 0;
using(Stream requestStream = request.GetRequestStream()) {
buffer = new Byte[checked((uint) Math.Min(1024, (int) fs.Length))];
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0) {
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Flush();
}
}

最佳答案

我相信问题正在发生,因为您正在尝试获取不再可用的请求流:

试试这段代码:

        List<string> files = new List<String>();
files.Add(@"C:\Test1.txt");
files.Add(@"C:\Test2.txt");
using (Stream requestStream = request.GetRequestStream())
{
files.ForEach(fileName =>
{
byte[] buffer = null;
int bytesRead = 0;
using (FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
buffer = new Byte[checked((uint)Math.Min(1024, (int)fs.Length))];
while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) != 0)
{
requestStream.Write(buffer, 0, bytesRead);
}
requestStream.Flush();
}
});
}

更新:要控制端点和文件,试试这个:

    static void Main(string[] args)
{
string result = SendPost(@"C:\Test1.txt", "https://httpbin.org/post");
if(result.Contains("SUCCESS"))
SendPost(@"C:\Test2.txt", "https://httpbin.org/anotherpost");

}

static string SendPost(string filename, string URL)
{

var httpWebRequest = (HttpWebRequest)WebRequest.Create(URL);
httpWebRequest.ContentType = "text/plain";
httpWebRequest.Method = "POST";

/*proxy config*/
WebProxy proxy = new WebProxy();
Uri newUri = new Uri("http://xxxxxx");
proxy.Address = newUri;
httpWebRequest.Proxy = proxy;

using (var sw = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string[] lines = File.ReadAllLines(filename);
for(int i=0; i<lines.Length; i++)
sw.WriteLine(lines[i]);
}

var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
return result;
}
}

关于c# - 该流不支持并发 IO 读取或写入操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49614913/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com