我的目标是在字节数组字段中发送包含标头对象和压缩数据的 JSON。
[JsonObject(MemberSerialization.OptOut)]
public class Message
{
public Message()
{
Header = new Header();
}
public Header Header { get; set; }
public byte[] Data { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
字节数组是 gzip 压缩的 JSON 对象,但这无关紧要。我遇到的问题是,如果我序列化 JSON,它会转换为字符串,然后再转换回字节。问题是,消息大小增加了很多,因为序列化字节数组会将其转换为字符串表示。
我受到最大消息大小的限制,并且我已经准备好压缩数据,但是当我要发送包含字节数组和未压缩标头中的压缩数据的 JSON 时,序列化 JSON 对象使我超出了消息大小限制。
是否有任何可靠的方法可以立即将 JSON 对象转换为字节数组。
var stringMessage = JsonConvert.SerializeObject(message,Formatting.None);
var bytes = Encoding.UTF8.GetBytes(stringMessage);
var stringMessage2 = JsonConvert.SerializeObject(message.TransportHeader, Formatting.None);
var bytes2 = Encoding.UTF8.GetBytes(stringMessage2);
Message eventMessage = new Message(bytes);
var bytes3= Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(message.Transportdata));
Run Code Online (Sandbox Code Playgroud)
压缩数据大小 =243905
序列化后以字节为单位的完整 JSON = 325313
仅以字节为单位的标头大小 = 90
只是将压缩数据序列化并转换回字节 = …
因此,我一直在努力捕捉与数据库相关的错误,例如,如果 SQL 数据库已关闭或不可用,则代码抛出错误并且网站显示空白页面,如果我app.UseDeveloperExceptionPage();在 Configure 方法中使用它,则它工作正常,但是当我正在尝试使用
任何一个
app.UseStatusCodePagesWithRedirects("/error?error={0}");
Run Code Online (Sandbox Code Playgroud)
或者
app.UseExceptionHandler("/error?error={0}");
Run Code Online (Sandbox Code Playgroud)
什么都没有发生,只显示一个空白页面,捕获其他错误(例如 404 等)工作正常。捕获 .NET Core MVC 项目中所有一般错误的正确方法是什么?
相当简单的问题,但我难以克服的问题.我在网上找到的所有例子都没有,不确定它是否因为它们已经过时而IO中的某些内容在过去的2 - 3年内发生了变化,或者我遗漏了一些明显的东西.
我知道用readFile返回读取文件IO String 并没有简单的方法来摆脱它,但据说简单的方法将文件读入正常String是 s<- readFile "filename"在命令行中工作,但我不能让它在函数中工作.
getString ::IO String
getString = readFile "Input.txt"
Run Code Online (Sandbox Code Playgroud)
相当简单,但返回IO String而不是String,我在制作s<- readFile "filename"工作时遇到了麻烦 .我真正想要的只是简单的函数,它返回String中的文件然后我可以处理该字符串中的数据.
Ps我很想看到逐行读取文件的简单方法,因为所有示例似乎都非常复杂,因为它们应该做什么以及在任何命令式编程语言中执行这些操作是多么容易.
我试图struct在一个类中使用模板,但无法弄清楚如何正确地声明它
template<typename var>
struct Node
{
var value;
Node* left;
Node* right;
};
class Tree
{
public:
Tree();
~Tree();
template<typename var>
void insert(var key, Node *node);
template<typename var>
Node* search(var key, Node *node);
void deleteTree(Node *node);
void inOrderTraversePrint(Node* node);
void preOrderTraversePrint(Node* node);
void postOrderTraversePrint(Node* node);
Node* getRoot();
void resetRoot();
private:
Node* root;
};
Run Code Online (Sandbox Code Playgroud)
我一直得到几个错误"节点不是一个类型"和"没有参数列表的模板名称节点的无效使用".
我知道如何class在类内部或外部模拟单个和方法,但这是我第一次使用struct并尝试struct在类中使用模板化.什么是templated struct在类中声明和使用的正确方法.
$scope.showDetails = function (dashboard_item) {
$log.debug("clicked");
$http({
url: '/Details/Details',
method: 'GET',
data: { name: dashboard_item.FName }
})
};
Run Code Online (Sandbox Code Playgroud)
这将调用方法,但不会将名称传递给它,并将返回角度控制器.而不是打开/留在新页面.
*onclick="location.href='@Url.Action("Details", "Details", new {name = $scope.dashboard_item.Fname })'"
Run Code Online (Sandbox Code Playgroud)
这将正确打开/返回新的页面/视图,但它无法访问剃刀/服务器端的角度变量.
似乎没有任何好的例子或任何信息如何做这么简单的事情.我知道我应该可能正在使用有角度的路线,但我不知道如何,老实说我宁愿坚持使用asp MVC路由,但此时的任何事情都会做..
TLDR我想在将参数传递给它时返回/调用/打开新的MVC视图