信号器/集线器和jquery脚本上的404错误

时间:2013-03-06 09:17:34

标签: c# asp.net iis-7 http-status-code-404 signalr

我刚开始在C#中使用SignalR,似乎很有意思。

我创建了ASP.NET Empty Web Application并按照下面提到的教程

我在MSDN上找到了Getting Started with SignalR教程。

我已经完成了本教程中提到的所有步骤。当它在ASP.NET Development Server上运行时,它似乎可以在我的本地机器上运行。

但是当我将项目部署到我的IIS7时,它不起作用。

当我使用fiddler检查时,它在html页面中包含的所有脚本文件中都有404的结果。

这是小提琴手展示的enter image description here

即使我从StackOverflow上的帖子中找到了一些建议,当我更改我的web.config文件时,它似乎也不起作用。

最后我根据FAQ's of SignalR修改了web.config

这是我的web.config文件:

<configuration>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
    </modules>
  </system.webServer>

</configuration>

Global.asax文件:

public class Global : System.Web.HttpApplication
    {

        protected void Application_Start(object sender, EventArgs e)
        {
            // Register the default hubs route: ~/signalr/hubs 
            RouteTable.Routes.MapHubs();
        }
        // Rest of the Methods(Session_Start,Application_BeginRequest..) are empty
     }

我也改变了

 <script type="text/javascript" src="/signalr/hubs"></script>

<script type="text/javascript" src='<%= ResolveClientUrl("~/signalr/hubs") %>'></script>

<script type="text/javascript" src='<%= ResolveUrl("~/signalr/hubs") %>'></script>

它们似乎都不起作用。

不要犹豫,询问是否需要任何信息。

任何帮助将不胜感激


更新

根据Aron建议,对Global.asax文件进行了以下更改

 RouteTable.Routes.IgnoreRoute("Scripts/");

现在,jQuery脚本似乎正在加载并运行。

以下是在IIS上托管时更新的错误消息,它来自浏览器窗口的Console标签。

SCRIPT5022: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>.

3 个答案:

答案 0 :(得分:1)

您的IIS设置可能存在问题。请尝试为.js扩展名添加MIME类型。请参阅此link

答案 1 :(得分:1)

当IIS无法处理扩展名为url

时,可能会发生404错误

http://support.microsoft.com/kb/980368

答案 2 :(得分:0)

MSDN文章演示了如何在2.0版中创建SignalR应用程序。但你使用信号器1.0,可能是视觉工作室的旧版本。升级visual studio并使用nugget包管理器为您的项目添加signalr 2.0需求。我认为作为第一次尝试,最好使用asp.net Web应用程序而不是MVC(作为MSDN文章)。所以你不会有路由问题。我可以毫无问题地运行样本。