【问题标题】:/signalr/hubs 404 not found when deployed to local IIS server, works on IIS express + signalr 1.0部署到本地 IIS 服务器时找不到 /signalr/hubs 404,适用于 IIS express + signalr 1.0
【发布时间】:2019-11-21 23:42:05
【问题描述】:

我正在 ASP.net 上编写一个 angularJS 单页应用程序,使用 signalR 与托管在 Windows Server 上的服务器进行通信。它通过 Visual Studio 在 IIS Express 上完美运行,但在部署到本地 IIS (10.0) 时无法运行。我已经尝试解决这个问题两天了,但我完全无处可去。我还使用生成的集线器代理。这是我尝试过的:

-已安装 ASP.net

-确保所有 IIS/.NET 功能都安装在 Windows Server 上

-验证应用程序池是 .net 4.0 集成的

这是我的创业课程:

using System;
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(Quoting.Startup))]
namespace Quoting
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            var hubConfiguration = new HubConfiguration();
            hubConfiguration.EnableDetailedErrors = true;
            hubConfiguration.EnableJavaScriptProxies = true;

            app.MapSignalR();
            System.Diagnostics.Debug.WriteLine("SignalR Mapped");
        }
    }
}

我已经尝试了以下每一个,加上旧版本 MVC 的所有可能组合,这不是我在编程中使用的......

<script src="/signalr/hubs"></script>
<script src="~/signalr/hubs"></script>
<script src="signalr/hubs"></script>
<script src="/hubs"></script>
<script src=".../signalr/hubs"></script>
<script src="{{appname}}/signalr/hubs"></script>

我的 web.config 中有这个:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
</system.webServer>

jquery:

    <script src="Scripts/jquery-3.4.1.js"></script>
    <script src="Scripts/jquery.signalR-2.4.1.min.js"></script>
    <script src="Scripts/jquery.signalR-2.4.1.js"></script>
    <script src="/signalr/hubs"></script> //note: this is what works on IIS express

我很迷茫。当我在浏览器中输入“localhost:port/signalr/hubs”时,我在 IIS express 上得到响应。但是,对我的域执行此操作时,'{domainname}/directory/signalr/hubs' 得到 404 未找到,并且我能想到的每个组合也将返回 404。

【问题讨论】:

  • 能否请您发布 IIS Web 应用程序文件夹目录?为什么需要使用 {domainname}/directory/signalr/hubsuse'?由于“/signalr/hubs”表示根文件夹的signlar/hubs文件夹,你将面临404错误。如果您的应用程序位于文件夹中,则应使用“/directory/signalr/hubs”。
  • 当然,IIS 只指向一个文件夹,该文件夹内还有其他几个目录,其中一个是“Supervisor”。所以尝试 Supervisor/signalr/hubs 是行不通的。我会尝试添加主目录。附带说明一下,当我在 Visual Studio 上发布应用程序时,它不会添加 OWIN startup.cs 文件或任何内容,即使它包含在项目中也是如此。我尝试添加它,但它什么也没做,我担心它可能会以不同的方式调用 start。
  • 此外,找到了 Jquery signalR 脚本,调用的目录结构看起来与在 Visual Studio 中运行时的预期一样。

标签: asp.net iis signalr signalr-hub


【解决方案1】:

已解决: 列出了我的目录结构,以便 IIS 指向一个名为“网站”的文件夹,在这个文件夹中,我有不同 Web 应用程序的子目录。当应用程序放置在这些子目录之一中时,在打开网站时不会调用 startup.cs。因此,我需要更改我的代码,以便单页应用程序只是在“网站”文件夹中,并且可以路由到单独的应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多