小编nun*_*esf的帖子

使用Javascript下载二进制文件

我想使用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)

谢谢!

javascript

21
推荐指数
1
解决办法
4万
查看次数

如何在React应用程序中在运行时加载JSON配置?

我有一个React应用程序(具有静态内容,不使用Node.js),我需要加载配置文件(JSON).

文件加载需要在运行时,因为配置需要具有与托管应用程序的服务器相关的不同数据.

由于最后一个要求,我无法使用例如webpack外部加载文件,因为应用程序在更新JSON文件时不会更新配置.

最好的方法是什么?

我已经使用Fetch API(加载文件的http请求)完成了这项工作,但也许有更好的方法可以做到这一点.

javascript json reactjs

7
推荐指数
1
解决办法
2185
查看次数

SignalR与证书

我想创建一个简单的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.

那么,我做错了什么?

c# ssl ssl-certificate signalr owin

5
推荐指数
1
解决办法
3299
查看次数

在 .Net Core 中加载程序集时解决依赖项

我在 .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 中是不可能的?

c# roslyn .net-core

5
推荐指数
1
解决办法
2510
查看次数

SIgnalR:如何在连接上向客户端发送异常?

在集线器中,我想基于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)

我必须做什么才能正确发送异常?

谢谢!

c# asp.net signalr

3
推荐指数
1
解决办法
2135
查看次数

将Dictionary属性作为Object访问

我有这个课程:

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)

.net c# intellisense visual-studio

1
推荐指数
1
解决办法
127
查看次数