SignalR与Firefox在控制台中显示XML分析错误

时间:2017-05-24 14:21:13

标签: asp.net-mvc signalr

我在MVC应用程序中使用signalr 2.2.2。除了事实之外,一切都运行正常,每次应用程序导航到另一个页面时,都会显示以下形式的控制台错误:

XML Parsing Error: no root element found
Location: http://localhost/signalr/abort?transport=serverSentEvents&clientProtocol=1.5&connectionToken=2elX1XZHXH0xmQaLZKyHUFW5Z2rb2DGRYEI...

这只发生在firefox中。有人知道如何解决这个问题吗? 感谢

1 个答案:

答案 0 :(得分:0)

可能与已知的Firefox-884693问题有关。根据一些研究(herehere)和searching通过SignalR代码,修复将在回复响应之前分配Content-Type。因此可能需要更改以下文件。

// src/Microsoft.AspNet.SignalR.Core/PersistentConnection.cs
private static Task FailResponse(IResponse response, string message, int statusCode = 400)
{
    response.StatusCode = statusCode;
    // response.ContentType = "text/plain";  // <--- ADD THIS LINE
    return response.End(message);
}


// src/Microsoft.AspNet.SignalR.Core/Transports/WebSocketTransport.cs
private Task AcceptWebSocketRequest(Func<IWebSocket, Task> callback)
{
    var accept = _context.Environment.Get<Action<IDictionary<string, object>, WebSocketFunc>>(OwinConstants.WebSocketAccept);

    if (accept == null)
    {
        // Bad Request
        _context.Response.StatusCode = 400;
        // _context.Response.ContentType = "text/plain";  // <--- ADD THIS LINE
        return _context.Response.End(Resources.Error_NotWebSocketRequest);
    }

    Action<IWebSocket> prepareWebSocket = socket => {
        _socket = socket;
        socket.OnClose = _closed;
        socket.OnMessage = _message;
        socket.OnError = _error;
    };

    var handler = new OwinWebSocketHandler(callback, prepareWebSocket, _maxIncomingMessageSize);
    accept(null, handler.ProcessRequest);
    return TaskAsyncHelper.Empty;
}

这需要将bug提交给开源项目,分叉,应用更改,测试,创建拉取请求等等,这比我现在的时间更长。如果有人想测试这个理论,谢谢。