无法发布ASP.NET SignalR代码

时间:2019-06-24 14:00:18

标签: c# asp.net signalr

我在经典的ASP.NET Web窗体中实现了SignalR以启用进度条。在本地测试实施情况时,一切都完美运行

但是,当我尝试将代码发布到服务器时,应用程序崩溃,并显示了一个非常普通的ASP.NET错误

发布SignalR时,我需要使用或执行任何特定的操作吗?

非常感谢您

这是我的Hub类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.AspNet.SignalR;

namespace IAACCESS.SignalR
{
    public class ProgressHub : Hub
    {
        static ProgressHub()
        {

        }
    }
}

这是我的入门班

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(IAACCESS.SignalR.Startup1))]

namespace IAACCESS.SignalR
{
    public class Startup1
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();
        }
    }
}

这是我的JavaScript部分

   function ProgressBarModal(showHide) {

        if (showHide === 'show') {
            $('#mod-progress').show();
            if (arguments.length >= 2) {
                $('#progressBarParagraph').text(arguments[1]);
            } else {
                $('#progressBarParagraph').text(arguments[1]);
            }

            window.progressBarActive = true;

        } else {
            $('#mod-progress').hide();
            window.progressBarActive = false;
        }
    }

    $(function () {
        // Reference the auto-generated proxy for the hub.
        var progress = $.connection.progressHub;
        console.log(progress);

        // Create a function that the hub can call back to display messages.
        progress.client.AddProgress = function (fileName, message, percentage) {
            ProgressBarModal("show", fileName + " " + message);
            document.getElementById("divProgress").style.display = "block";
            document.getElementById("divUpload").style.display = "block";
            document.getElementById("divProgress").style.width =  percentage + "%";
            document.getElementById("<%=lblPercentage.ClientID %>").firstChild.data = parseInt(percentage) +  "%";
            $('#ProgressMessage').width(percentage);
            if (percentage === "100%") {
                ProgressBarModal();
            }
        };

        $.connection.hub.start().done(function () {
            var connectionId = $.connection.hub.id;
            console.log(connectionId);
        });

    });

1 个答案:

答案 0 :(得分:0)

首先,正如我在评论中提到的,我将自定义错误属性从RemoteOnly更改为Off。

我在那里看到了关于错误的更好描述

  

“ / access_int”应用程序中的服务器错误。此操作需要IIS   集成管道模式

我去了IIS,将应用程序池设置从“基本”更改为“集成”

那给了我另一个错误

  

500-内部服务器错误。您的资源有问题   正在寻找,并且无法显示

然后我去了IIS,并将身份模拟的属性更改为false

此后一切正常