首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SignalR网站在IIS上部署时返回404

SignalR网站在IIS上部署时返回404
EN

Stack Overflow用户
提问于 2014-06-18 18:49:29
回答 3查看 1.6K关注 0票数 0

在IIS中部署SignalR 1.3.1 .NET 4.0 WebForms网站时,我遇到了问题。该站点在Visual 2010中运行良好,但在使用已部署版本时返回“404-文件或目录未找到”。在幕后,404是在客户端请求negotiate.json文件的~/signalr/协商URL时出现的。以下是IIS的外观:

请注意,这里的bin文件夹只是我的.dll和.pdb的SignalR 1.3.1 .NET 4.0 WebForms网站。它没有别的东西了。

以下是我的Global.asax.cs代码:

代码语言:javascript
复制
    protected void Application_Start(object sender, EventArgs e)
    {
        // Register the error handling pipeline module
        GlobalHost.HubPipeline.AddModule(new ErrorHandlingPipelineModule()); 

        // Register the default hubs route: ~/signalr/hubs
        RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true });
    }

以下是我的SignalR集线器代码:

代码语言:javascript
复制
public class EppafHub : Hub 
{
    /// <summary>
    /// Sends notifications for new vehicle launches.
    /// </summary>
    public void SendVehicleUpdates()
    {
        try
        {
            Clients.All.SyncVehicleUpdates();
        }
        catch (Exception ex)
        {

            throw;
        }
    }
}

以下是我的WPF客户端代码:

代码语言:javascript
复制
ServicePointManager.DefaultConnectionLimit = 10;

// Establish a connection to the hub
var hubConnection = new HubConnection("http://MyServer:MyPort/");                
hubProxy = hubConnection.CreateHubProxy("EppafHub");

// Subscribe to the server events
hubProxy.On("SyncVehicleUpdates", new Action(() => SynchronizeVehicleUpdates()));

// Start the connection to the hub
hubConnection.Start().Wait();

当我试图启动hubConnection时,我会得到404错误。我做错了什么?有什么方法可以从IIS浏览集线器,看看是部署问题还是代码问题?我看到了类似的问题,但没有一个解决方案对我有用。

我还直接在SignalR服务器上安装了各种IIS包。

我还使用以下命令清除了Asp.NET缓存:

代码语言:javascript
复制
net stop w3svc
Remove-Item -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\*" -Force -Recurse
net start w3svc
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-30 18:23:17

原来,这是操作系统的问题。在Windows 2008 R2中,一切都运行良好,而在Windows 2008中不工作。

票数 -1
EN

Stack Overflow用户

发布于 2014-10-14 23:55:06

我得到了同样的错误,并将SignalR包添加到IIS计算机中解决了这个问题( IIS与我的dev不同)。

  1. 从nuget.exe下载http://nuget.org/nuget.exe
  2. 启动cmd shell (作为管理员)并导航到您的web目录。(不确定这是必需的,但这是我为使它发挥作用所做的工作的一部分。) c:\inetpub\wwwroot>Nuget安装Microsoft.AspNet.SignalR c:\inetpub\wwwroot>Nuget安装Microsoft.Owin.Cors
  3. 在cmd外壳导航门中 C:\Windows\Microsoft.NET\Framework\v4.0.3031
  4. 运行aspnet_regiis命令: C:\Windows\Microsoft.NET\Framework\v4.0.3031>aspnet_regiis -i
  5. 由于我运行的是独立服务器,而且Windows7默认锁定了所有传入端口,所以我使用以下方法打开端口: http添加urlacl url=http://1xx.168.1.42:58938/ user=everyone
  6. 我还在2013年通过发布到磁盘打包了我的SignalR客户端页面。Web.config和packages.config文件可能是您所缺少的。

packages.config:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="1.6.4" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.JS" version="2.1.2" targetFramework="net45" />
</packages>

web.config:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5" />
  </system.web>
</configuration>

您还可以尝试在packages.config站点上使用来自MoveShape演示的更具包容性的SignalR。

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="jQuery" version="1.10.2" targetFramework="net45" />
  <package id="jQuery.UI.Combined" version="1.10.3" targetFramework="net45" />
  <package id="Microsoft.AspNet.Cors" version="5.0.0" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR" version="2.1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.Core" version="2.1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.JS" version="2.1.2" targetFramework="net45" />
  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.1.2" targetFramework="net45" />
  <package id="Microsoft.Owin" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Cors" version="3.0.0" targetFramework="net45" />
  <package id="Microsoft.Owin.Host.SystemWeb" version="2.0.1" targetFramework="net45" />
  <package id="Microsoft.Owin.Security" version="2.0.1" targetFramework="net45" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net45" />
  <package id="Owin" version="1.0" targetFramework="net45" />
</packages>
票数 0
EN

Stack Overflow用户

发布于 2014-11-03 21:59:12

检查以确保您的IIS服务器配置了无扩展URL处理程序

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24292989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档