我想使用Javascript下载二进制文件.
我有一个REST服务,它返回二进制数据,我想知道它是否可以显示二进制文件,无论文件扩展名如何.
这是我目前的代码:
var xhr = new XMLHttpRequest;
xhr.open("GET", requestUrl);
xhr.addEventListener("load", function () {
var ret = [];
var len = this.responseText.length;
var byte;
for (var i = 0; i < len; i++) {
byte = (this.responseText.charCodeAt(i) & 0xFF) >>> 0;
ret.push(String.fromCharCode(byte));
}
var data = ret.join('');
data = "data:application/pdf;base64," + btoa(data);
window.open(data, '_blank', 'resizable, width=1020,height=600');
}, false);
xhr.setRequestHeader("Authorization", "Bearer " + client.accessToken);
xhr.overrideMimeType("octet-stream; charset=x-user-defined;");
xhr.send(null);
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个React应用程序(具有静态内容,不使用Node.js),我需要加载配置文件(JSON).
文件加载需要在运行时,因为配置需要具有与托管应用程序的服务器相关的不同数据.
由于最后一个要求,我无法使用例如webpack外部加载文件,因为应用程序在更新JSON文件时不会更新配置.
最好的方法是什么?
我已经使用Fetch API(加载文件的http请求)完成了这项工作,但也许有更好的方法可以做到这一点.
我想创建一个简单的SignalR应用程序.使用http一切正常,但当我尝试使用https和证书时,应用程序不起作用.
目前,我唯一想做的就是在服务器中获取客户端证书.
服务器(身份验证处理程序):
public class ClientCertificateAuthenticationHandler : AuthenticationHandler<ClientCertificateAuthenticationOptions>
{
protected override Task<AuthenticationTicket> AuthenticateCoreAsync()
{
var cert = Context.Get<X509Certificate>("ssl.ClientCertificate");
if (cert == null)
{
return Task.FromResult<AuthenticationTicket>(null);
}
try
{
Options.Validator.Validate(cert);
}
catch
{
return Task.FromResult<AuthenticationTicket>(null);
}
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
客户(中心)
var connection = new HubConnection("https://localhost:8080/");
connection.AddClientCertificate(X509Certificate.CreateFromCertFile("c1.cer"));
IHubProxy myHub = connection.CreateHubProxy("MyHub");
connection.Start().Wait();
Run Code Online (Sandbox Code Playgroud)
这样做,在服务器上,当var cert = Context.Get<X509Certificate>("ssl.ClientCertificate");我得到null.
那么,我做错了什么?
我在 .net Core 中有一个项目,我需要将程序集(使用Roslyn编译)加载到沙箱中,以隔离代码执行。
我的第一个想法是使用AppDomain,但在 .net Core 中这是不可能的。因此,解决方案是使用AssemblyLoadContext。
以下代码是我的程序集加载程序:
public class AssemblyContext : AssemblyLoadContext
{
public Assembly Load(Stream stream)
{
this.Resolving += ResolvingHandler;
return this.LoadFromStream(stream);
}
public Assembly ResolvingHandler(AssemblyLoadContext context, AssemblyName assemblyName)
{
var assembly = context.LoadFromAssemblyName(assemblyName);
Console.WriteLine("Resolving: " + assemblyName.FullName);
return assembly;
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是在加载Assembly 之后,没有调用Resolving方法并且没有加载依赖项,这使得我编译的代码无法正常工作。
是否有必要对调用ResolvingHandler做任何额外的步骤?或者这在 Core 中是不可能的?
在集线器中,我想基于Connection Header对客户端进行身份验证.
如果不允许客户端连接,我想抛出一个带有详细错误的异常.
但是,如果我在集线器上抛出异常,客户端只会收到"(500)内部服务器错误"
public override Task OnConnected()
{
string clientKey = Context.Headers["clientKey"];
string version = Context.Headers["version"];
if (!this.isValid(clientKey, version))
throw new InvalidOperationException("SIGNALR: Invalid client");
return base.OnConnected();
}
Run Code Online (Sandbox Code Playgroud)
我必须做什么才能正确发送异常?
谢谢!
我有这个课程:
public class Class1
{
public Dictionary<string, Class2> Items { get; set; }
}
public class Class2
{
public string Code { get; set;}
public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
还有这个
class Program
{
static void Main(string[] args)
{
Class1 c = new Class1();
c.Items = new Dictionary<string, Class2>();
c.Items.Add("Item0001", new Class2() { Code = "0001", Name = "Item ABC" });
c.Items.Add("Item0002", new Class2() { Code = "0002", Name = "Item XYZ" });
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道的(我已经用Google搜索了但我找不到相关的信息)是否有办法使用Intellisense或类似的东西来访问这样的对象.
c.Items.Item0001.Code
Run Code Online (Sandbox Code Playgroud)