I am working on a Web Application on the Asp .Net 4.0 framework that uses SignalR, having installed it from the Nuget package. When I debug or run the application without debugging locally it works correctly. However, when it is deployed to the production server it is unable to find the signal/hubs
file that is being dynamically injected into the httphandlers. Due to it's dynamic nature it has to be created on the fly, so I can't just copy the working file into the project either.
I have tried the following methods of loading the file:
<script src="/signalr/hubs" type="text/javascript"></script>
<script src="signalr/hubs" type="text/javascript"></script>
And in the code behind:
ScriptManager.GetCurrent(Page).Scripts.Add(new ScriptReference("~/signalr/hubs"));
All of these work locally but not on the server. The path that is rendered in the html looks correct, but there is no file there, delivering a 404 error. If it matters, the server has given the application Full Trust and the application is being run as an application under another site in IIS that uses a subdomain.
In our case we had issue with optimizeCompilations attribute in web.config (http://msdn.microsoft.com/en-us/library/ms366723.aspx). Removing optimizeCompilations from web.config solved issue.
I noticed @PCasagrande mentioned in one of the comments that this problem was on a subdomain site.
I had a similar problem and added a rewrite rule to remove the application folder from the url. This solved my 404 error on 'signalr/hubs':
I added the 'remove subdomain' rule before the rewrite rule for the subdomain:
I am also using a subdomain. When using SignalR 0.5.3, I had to modify the web.config:
After upgrading to Microsoft.AspNet.SignalR 1.0.0-alpha2 NuGet added an ~/App_Start/RegisterHubs.cs, but I didn't think that was working for me due to using Web Forms and my setup. I had to add RouteTable.Routes.MapHubs(); to my Global.asax Application_Start method.
Basically make sure you can use the new routing features that were added in .Net 3.5 SP1 (System.Web.Routing). Since SignalR depends on them, you will need to ensure that they are working. Try adding a custom route to test that your routing is working.
I was facing a similar issue, I just changed the
/signalr/hubs
to/virtualDirectoryName/signalr/hubs
and it worked.The problem was solved by setting the following flags in the web.config.
For some reason Nuget did not set these values for Elmah or SignalR
My fault was the missing Global.asax file in directory (dll is not enough)