【问题标题】:SignalR and SelfHost in F#F# 中的 SignalR 和 SelfHost
【发布时间】:2014-03-28 01:31:15
【问题描述】:

我认为这将是一个快速的答案,但我今天找不到正确的答案。我正在尝试创建 F# SignalR Self-Host 应用程序(我遵循了本教程 http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-signalr-20-self-host

结果是我的应用程序没有在我的本地主机上映射信号器/集线器,没有错误消息(仅在找不到客户端时来自 JavaScript 文件)。

namespace Program

open Owin
open Dynamic
open Microsoft.AspNet.SignalR
open Microsoft.AspNet.SignalR.Hubs
open Microsoft.Owin.Hosting
open Microsoft.Owin.Cors
open System
open System.Diagnostics

type MyHub =
   inherit Hub
   member x.Send (name : string) (message : string) =
       base.Clients.All?addMessage name message

type MyWebStartUp() =
    member x.Configuration (app :IAppBuilder) =
       app.UseCors CorsOptions.AllowAll |> ignore
       app.MapSignalR() |> ignore
       ()

module Starter =

[<EntryPoint>]
let main argv = 
    let hostUrl = "http://localhost:8085"
    let disposable = WebApp.Start<MyWebStartUp>(hostUrl)
    Console.WriteLine("Server running on "+ hostUrl)
    Console.ReadLine() |> ignore
    disposable.Dispose() 
    0 // return an integer exit code

我首先创建了 C# 应用程序,它运行良好,我认为我的 F# 代码不正确,但我找不到那个错误。整个项目供参考:https://github.com/MartinBodocky/SignalRFSharp

【问题讨论】:

    标签: asp.net f# signalr owin


    【解决方案1】:

    使用action overloadStart,您不必为了启动配置而制作一个完整的类型。此外,您绝对应该使用use 而不是手动处理。

        let startup (a:IAppBuilder) =
           a.UseCors(CorsOptions.AllowAll) |> ignore
           a.MapSignalR() |> ignore
        use app = WebApp.Start(hostUrl, startup)
    

    但这只是为了使代码更好,您的集线器代码存在问题,因为您带来的动态模块只能调用带有一个参数的方法,使用 FSharp.Interop.Dynamic(在 nuget 中)以获得强大的 DLR ?运算符。

    open EkonBenefits.FSharp.Dynamic
    type MyHub() =
        inherit Hub()
        member this.Send (name : string) (message : string) =
            this.Clients.All?addMessage(name,message) |> ignore
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      相关资源
      最近更新 更多