我对使用 .net Web API 在 HTTP 响应中返回字节数组与流的问题有点困惑。
我遇到了以下代码:
SqlConnection conn = new SqlConnection();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "Select FileData.PathName() As FilePath, GET_FILESTREAM_TRANSACTION_CONTEXT() AS Context From FileStorage";
conn.Open();
SqlDataReader reader = cmd.ExecuteReader();
reader.Read();
string filePath = (string)reader["FilePath"];
byte[] fileBytes = (byte[])reader["Context"];
SqlFileStream stream = new SqlFileStream(filePath, fileBytes, FileAccess.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
result.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
Run Code Online (Sandbox Code Playgroud)
问题 1: 为什么他们会在 HTTP 响应中返回 Stream 而不是字节数组?
问题2:如果通过调用已经可以使用字节数组
,为什么还要创建SqlFileStream来读取数据(byte[])reader["Context"]?这不是意味着整个文件内容都被读入内存吗?那么为什么需要 Stream 呢?
arrays httpresponse filestream asp.net-web-api asp.net-web-api2
许多开发人员正在使用测试驱动开发(TDD)设计他们的应用程序,但我想知道我应该在哪个阶段将TDD合并到我的项目中?我应该首先设计我的类,进行一些单元测试并确定需要哪些方法或首先设计方法,然后再进行一些单元测试?
最好的方法是什么?
给定路径c:\ someFolder\**\*.exe.如何使用此目录路径获取文件列表.我知道可以使用,Directory.GetFiles(directoryPath)但只有在directoryPath中没有通配符时才能使用.
我编写了一个自定义的MSBuild任务,称之为TaskA,它解析文件并对其进行一些处理.我现在想编写另一个MSBUild任务,称之为TaskB,在其中使用TaskA.我知道我可以像使用普通类一样使用TaskA,只需从TaskB调用它的execute方法.但你认为这是合情合理的吗?在执行TaskB时,是否仍会记录来自TaskA的日志消息?
给定IP地址列表如何以编程方式检查本地计算机是否仍具有到这些IP地址的活动TCP连接?我正在使用C#.
每当用户将鼠标悬停在菜单项上时,我都需要显示无模式消息框.我不能使用messagebox.show(...),因为它是一个模态.所以我所做的是创建一个单独的窗体,并使用菜单项上的悬停事件显示窗体.我有两个问题:
1)当窗体显示时,菜单失去了可见性.
2)窗口表单不会出现在菜单项旁边,就像工具提示一样.
关于如何定制组件的工具提示以使其外观和行为类似于Windows窗体的任何想法?
我想编写一个以编程方式分配Fogbugz案例的应用程序,我将如何实现这一目标?在以下任何情况下,是否可以实现此目的:
用户在我的应用程序的输入字段中输入文本和FogBugz的报告是在"说明"字段中填入用户输入文本浏览器中打开
fogbugz报告被分配给应用程序中的指定用户,而浏览器甚至没有被打开,即报告直接存储在数据库中.
我打算将默认值添加到其他字段中,因此我假设将该文本添加到"note"字段的过程相同.
Seeig我是C++的新手我以为我会尝试编写一个非常简单的控制台应用程序来填充2D数组并显示其内容.
但是我写的代码不会编译.
我得到的一些错误是:
错误C2065:'box':未声明的标识符
错误C2228:'.GenerateBox'的左边必须有class/struct/union
这是我的代码:
#include <iostream>
using namespace std;
int main()
{
Box box;
box.GenerateBox();
}
class Box
{
private:
static int const maxWidth = 135;
static int const maxHeight = 60;
char arrTest[maxWidth][maxHeight];
public:
void GenerateBox()
{
for (int i=0; i<maxHeight; i++)
for (int k=0; k<maxWidth; k++)
{
arrTest[i][k] = 'x';
}
for (int i=0; i<maxHeight; i++)
{
for (int k=0; k<maxWidth; k++)
{
cout << arrTest[i][k];
}
cout << "\n";
}
}
};
Run Code Online (Sandbox Code Playgroud)
有什么想法导致这些错误吗?
我遇到了在我的WCF应用程序中序列化枚举的问题.
我有一个Account继承自IAccount如下定义的接口的类:
namespace MyNamespace
{
public interface IAccount
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public Country Country { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
Account继承自的类IAccount定义为:
namespace MyNamespace
{
[DataContract]
public Account : IAccount
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string EmailAddress { get; set; } …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序返回依赖于指定时间的数据,我可以指定天,月或年.问题是,如果我今天要运行该应用程序并要求它返回1个月前的数据,并且在3个月的时间内我要求该应用程序返回该日期前一个月的数据(即从该日期开始的1个月) )结果显然会有所不同.由于这种动态特性,我发现很难创建单元测试,因为我必须根据运行测试的时间来更改日期.这是否表示设计不好或者这是一个例外情况?
c# ×4
.net ×1
arrays ×1
c++ ×1
connection ×1
filestream ×1
fogbugz ×1
glob ×1
httpresponse ×1
ip-address ×1
msbuild ×1
tcp ×1
tdd ×1
tooltip ×1
unit-testing ×1
visual-c++ ×1
wcf ×1
web-services ×1
winforms ×1