我的开发机器是Visual Studio 2013,该项目是使用.NET 4和SignalR 1.2.1的ASP.NET。
该项目使用IIS Express和本地IIS,但不能在Windows Server 2008 R2 SP1上运行。
Windows Server 2008 R2 SP1已经安装了KB980368,因此我不必担心无扩展名网址。
页面出现,但按钮永远不会启用,因为信号器/集线器出现404错误。
I found this link但在404下尝试了一切,但仍然无法正常工作。 我还尝试了on this blog和this KB所有内容,但没有取得任何成功。
我还将我的本地Windows 7 IIS设置与服务器进行了比较,一切看起来都是正确的,所以我真的没有想法!
这是我的网络应用程序:
这是html:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
</head>
<body>
<div>
<p>Document Name</p>
<input id="documentName" value="blah.pdf" />
<button id="startDownload" disabled="disabled">Start Download</button>
<p id="message"></p>
</div>
<asp:PlaceHolder runat="server">
<script src="Scripts/jquery-1.6.4.js"></script>
<script src="Scripts/json2.min.js"></script>
<script src="<%: ResolveClientUrl("~/Scripts/jquery.signalR-1.2.1.js") %>"></script>
<script src="signalr/hubs"></script>
<script>
$(function () {
var download = $.connection.fileCreatedHub;
$.connection.hub.start().done(function () {
$("#startDownload").click(function () {
var fileName = $("#documentName").val();
if (fileName.length === 0) {
alert('Must have document name.');
} else {
$('#startDownload').attr('disabled', true);
download.server.startDownload(fileName)
.fail(function (result) {
alert(result);
});
}
});
$('#startDownload').removeAttr('disabled');
}).fail(function () {
alert('Failed to connect!');
});
download.client.sendMessage = function (response) {
$('#startDownload').removeAttr('disabled');
$('#message').text(response);
};
});
</script>
</asp:PlaceHolder>
</body>
</html>
这是一个Global.asax.cs Application_Start
protected void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
这是RouteConfig类
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapHubs();
routes.EnableFriendlyUrls();
}
}
这是我的中心
[HubName("fileCreatedHub")]
public class FileCreatedHub : Hub
{
public void StartDownload(string fileName)
{
var context = GlobalHost.ConnectionManager.GetHubContext<FileCreatedHub>();
context.Clients.Client(Context.ConnectionId).sendMessage("Received " + fileName);
}
}
编辑1
IE网络日志
URL Method Result Type Received Taken Initiator Wait Start Request Response Cache read Gap
http://10.3.102.234/download2.aspx GET 200 text/html 2.02 KB 2.41 s refresh 0 47 2355 16 0 874
/signalr/hubs GET 404 text/html 160 B 109 ms <script> 2418 0 109 0 0 765
/Scripts/json2.min.js GET 200 application/x-javascript 2.96 KB 203 ms <script> 2418 0 156 47 0 671
/Scripts/jquery.signalR-1.2.1.js GET 200 application/x-javascript 110.83 KB 0.65 s <script> 2418 0 156 499 0 219
/Scripts/jquery-1.6.4.js GET 200 application/x-javascript 232.84 KB 0.74 s <script> 2418 0 109 640 0 125
编辑2 在查看IE网络流量后,我注意到IE正在请求/ signalr / hubs为text / html,
所以我改变了:
<script src="signalr/hubs"></script>
到
<script type="text/javascript" src="signalr/hubs"></script>
然而,它仍然以text / html的形式请求它,即使我查看它的来源是正确的。我想知道这可能是问题吗?
无论如何,提前感谢任何人的帮助!