Mil*_*vic 5 c# asp.net-mvc proxy signalr
SignalR正在工作,而项目是ASP.NET MVC3.现在我将它升级到MVC5(不是那么容易做,我必须告诉你).
然后我注意到signalR没有工作.我按照这本书,将SignalR重新安装到版本2.1.0,安装了OWIN(必须为v2 +)并为项目添加了启动类.
这是我的startup.cs类,它位于项目根文件夹中:
[assembly: OwinStartup(typeof(SISTEM.Startup))]
namespace SISTEM
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我觉得这里没问题,但也许我错过了什么......
现在这里是来自集线器的片段:
namespace SISTEM
{
public class PostingHub : Hub
{
public void Test(string hello)
{
Clients.All.hello(hello);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在视图中引用生成的代理:
<script src="~/Scripts/jquery.signalR-2.1.0.min.js"></script>
<script src="~/signalr/hubs"></script>
Run Code Online (Sandbox Code Playgroud)
我在fiddler中检查它,我可以看到/ signalr/hubs请求正在生成未找到的HTTP 404.
现在,我并不懒惰,我尝试了几件事:
任何帮助,将不胜感激.
更新:来自/ signalr/hubs的响应
<!DOCTYPE html>
<html>
<head>
<title>The resource cannot be found.</title>
<meta name="viewport" content="width=device-width" />
</head>
<body bgcolor="white">
<span><H1>Server Error in '/' Application.<hr width=100% size=1 color=silver></H1>
<h2> <i>The resource cannot be found.</i> </h2></span>
<font face="Arial, Helvetica, Geneva, SunSans-Regular, sans-serif ">
<b> Description: </b>HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly.
<br><br>
<b> Requested URL: </b>/signalr/hubs<br><br>
<hr width=100% size=1 color=silver>
<b>Version Information:</b> Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34212
</font>
</body>
Run Code Online (Sandbox Code Playgroud)
[HttpException]: The controller for path '/signalr/hubs' was not found or does not implement IController.
at System.Web.Mvc.DefaultControllerFactory.GetControllerInstance(RequestContext requestContext, Type controllerType)
at System.Web.Mvc.DefaultControllerFactory.CreateController(RequestContext requestContext, String controllerName)
at System.Web.Mvc.MvcHandler.ProcessRequestInit(HttpContextBase httpContext, IController& controller, IControllerFactory& factory)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContextBase httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.MvcHandler.BeginProcessRequest(HttpContext httpContext, AsyncCallback callback, Object state)
at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData)
at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
Run Code Online (Sandbox Code Playgroud)
Mox*_*hah 10
您需要在项目中安装Microsoft.Owin.Host.SystemWeb包
验证此链接
如果未安装软件包,请从软件包管理器控制台(PMC)安装以下软件包:
安装包Microsoft.Owin.Host.SystemWeb
UPDATE
它纯粹说,它无法检测你的启动类,这里有更多的发现.
<add key="owin:AutomaticAppStartup" value="false" />这肯定会有效,如果它没有尝试在示例项目中创建signalR.