我正在ASP.net上编写一个angularJS单页应用程序,使用signalR与Windows Server上托管的服务器进行通信。它可以通过Visual Studio在IIS Express上完美运行,但是在部署到本地IIS(10.0)上时无法正常工作。我已经尝试解决此问题已有两天了,但是我绝对没有解决任何问题。我也使用生成的中心代理。这是我尝试过的:
-已安装的ASP.net
-确保Windows Server上已安装所有IIS / .NET功能
-确认应用程序池已集成.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。
答案 0 :(得分:0)
已解决: 列出了我的目录结构,以便IIS指向一个名为“网站”的文件夹,并且在该文件夹中,我有用于不同Web应用程序的子目录。当应用程序位于这些子目录之一中时,打开网站时不会调用startup.cs。因此,我需要更改代码,以便单页应用程序仅位于“网站”文件夹中,并可以路由到单独的应用程序。