我在尝试解析C#应用程序中的XML文档时遇到此错误:
"出于安全原因,此XML文档中禁止使用DTD.要启用DTD处理,请将XmlReaderSettings上的ProhibitDtd属性设置为false,并将设置传递给XmlReader.Create方法."
作为参考,异常发生在以下代码的第二行:
using (XmlReader reader = XmlReader.Create(uri))
{
reader.MoveToContent(); //here
while (reader.Read()) //(code to parse xml doc follows).
Run Code Online (Sandbox Code Playgroud)
我对Xml的了解非常有限,我不知道DTD处理是什么,也不知道如何做错误消息的建议.有关可能导致此问题以及如何解决问题的任何帮助?谢谢...
我们正在迁移我们基于 MVC 的服务器应用程序并制作一个 REST-ful API,通过它可以处理调用。
我一直在阅读 AES 加密和 OAuth2 并决定实施一个从这些概念发展而来的解决方案,如下所示:
所有通信都通过 TLS 处理,因此这是增加的安全性,而不是唯一的防线。
在移动应用程序上,这会起作用,因为您可以在配置文件中隐藏移动应用程序的密钥,这提供了一些不错的安全措施 - [也许不是很多,我不完全确定]但是如果我们尝试转换所有请求从我们的网页到这种形式,这意味着使用 Javascript 来处理客户端 AES 加密和身份验证,并且……正如本文清楚地解释的那样,“如果您将 API 密钥存储在 JavaScript Web 应用程序中,您不妨打印一下它在主页上以粗体大写字母显示,因为全世界现在都可以通过浏览器的开发工具访问它。”
我可以只使用随机数作为 API 密钥——或者完全放弃对这些请求使用 AES 加密,并尝试通过其他方式(例如 CSRF 令牌)进行验证,并确保所有请求都以某种方式来自我们自己的前端——但是如果我们想创建一个允许与其他页面或服务集成的 API,这将不起作用,即使那样,我将如何保护客户端的秘密会话密钥?
这篇文章建议生成一次性 cookie 作为令牌,但这是一个有限的解决方案,适用于海报的服务,但不适用于我们。我希望能够 HMAC 用户发送的每个请求都带有一个用户特定的密钥,该密钥可以过期并被重置,并且由于该服务最终将处理资金,我希望请求身份验证被严格锁定。
那么我的选择是什么?
我是不是就放弃了 Javascript,因为它注定要失败?有什么方法可以存储密钥而不会像硬编码到 .js 脚本中的那样将它清楚地暴露出来?我是否应该生成一个仅用于登录调用的新临时密钥,并在用户请求服务器随机数时将其发送给用户?
此外,我链接到的帖子首先建议使用 cookie 来存储客户端的 Session …
一位客户要求我为他们构建一个库存解决方案,他们可以为所有办公设备打印条形码标签,以便以各种方式跟踪它们。
他们给了我一台 Citizen CL-S621 打印机(203x203 dpi 分辨率)用于测试,然后(那是噩梦)配置其驱动程序以打印并将所有内容安装到他们给我测试的非标准标签上,这是我遇到的最大问题仍然遇到的问题是打印机无法以直线打印某些条形,而是以虚线/点线形式打印它们。
下面的 C# 代码显示了我如何使用此库构建条形码的基础知识:
public void CreateTheBarcode(string StringToEncode)
{
Barcode b = new Barcode();
b.LabelFont = new Font("Sample Bar Code Font", 24, FontStyle.Bold);
b.IncludeLabel = true;
b.Encode(BarcodeLib.TYPE.CODE128, StringToEncode, Color.Black, Color.White, 730, 140);
b.SaveImage(@"C:\temp\Barcodes\"+StringToEncode+".png",SaveTypes.PNG);
Print(@"C:\temp\Barcodes\"+StringToEncode+".png");
}
public static void Print(string FilePath)
{
Process printJob = new Process();
printJob.StartInfo.FileName = FilePath;
printJob.StartInfo.UseShellExecute = true;
printJob.StartInfo.Verb = "printto";
printJob.StartInfo.CreateNoWindow = false;
printJob.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
printJob.StartInfo.Arguments = "\"" + "Citizen CL-S621" + "\"";
printJob.StartInfo.WorkingDirectory = Path.GetDirectoryName(FilePath);
printJob.Start(); …Run Code Online (Sandbox Code Playgroud) 我有一个名为Users一个名为Limit包含整数值的列的表.每个用户都有一个限制,但未注册的用户的默认限制为1.
我想运行一个简单的查询,告诉我该限制的用户,如果他们注册或默认为1,如果他们不是注册用户,但是当我运行一个查询与任一ISNULL或Coalesce如下记载:
SELECT coalesce(Limit,1) AS limit
FROM User
WHERE userID = 'testUser'
Run Code Online (Sandbox Code Playgroud)
如果我查询现有用户,查询将正常工作,但如果我尝试未注册的用户将返回一个空列表[它应该返回值为1的单行].
使用ISNULL而不是合并产生相同的结果.我发现的每个例子ISNULL和合并都是这样的.我错过了什么?
c# ×2
aes ×1
barcode ×1
coalesce ×1
javascript ×1
oauth-2.0 ×1
printing ×1
select ×1
sql ×1
sql-server ×1
xml-parsing ×1
xmlreader ×1