信号1.0.1跨域404错误



我有信号跨域使用的问题。我在一个解决方案中有三个不同的项目(应用程序),并使用signalr在其中启用聊天功能。我有聊天项目,是为其他三个应用程序分开的。

这是它的代码:

[HubName("ChatHub")]
public class ChatHub : Hub
 {
    public void Send(PorukaViewModel message)
     {
        ..do some code
        Clients.All.addMessage(
           ... // returns feedback to clients
        );
     }
 }

GlobalASAX

protected void Application_Start()
        {
            RouteTable.Routes.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
        }

这是我的客户端程序的代码,

控制器

string chatUrl = System.Configuration.ConfigurationManager.AppSettings["ChatUrl"] + "/signalr/hubs";
var connection = new HubConnection(chatUrl, useDefaultUrl: false);
IHubProxy myHub = connection.CreateHubProxy("ChatHub");
connection.Start().ContinueWith(task =>
{
  if (task.IsFaulted)
  {
    //... I log error and stop connection
    connection.Stop();
  }
  message = "some message";
  myHub.Invoke("Send", message).Wait();
    connection.Stop();
});

这在我的本地主机上工作得很好,但是当我在IIS上部署它时,我在connection.Start()上有这个错误:

System.Net。web异常:远程服务器返回一个错误:(404)没有找到。System.Net.HttpWebRequest.EndGetResponse (IAsyncResultasyncResult)Microsoft.AspNet.SignalR.Client.Http.HttpHelper灵活;> c__DisplayClass2.b__0 (IAsyncResult基于"增大化现实"技术)System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func 2 endFunction, Action 1 endAction, Task 1 promise, BooleanrequiresSynchronization)

我浏览了stackoverflow上所有的问题和答案,但找不到任何对我有帮助的。

我做错了什么?

*注意

我用jQuery修改了hubs.js,并更改了以下代码:

var signalrUrl = $("#chatUrl").val() + '/signalr';
...
signalR.hub = $.hubConnection(signalrUrl, { useDefaultPath: false });

并在我的通信视图中使用它,这在本地主机和IIS上都工作得很好。

问题可能出在这一行?

signalR。Hub = $。hubConnection(signalrUrl, {useDefaultPath: false});

在original/signalr/hubs中是这样的:

signalR。Hub = $。hubConnection("/signalr", {useDefaultPath: false});

我如何从控制器中做到这一点?

代码不正确:

string chatUrl = System.Configuration.ConfigurationManager.AppSettings["ChatUrl"] + "/signalr/hubs";

/SignalR/Hubs指向一个Javascript代理。

/signalr是连接的终点,所以代码应该是:

string chatUrl = System.Configuration.ConfigurationManager.AppSettings["ChatUrl"];

因为。net客户端会自动附加默认的/signalr URL。

更多文档在这里https://github.com/SignalR/SignalR/wiki/SignalR-Client-Hubs#hubconnection-api

相关内容

  • 没有找到相关文章

最新更新