问题标签 [hyprlinkr]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dependency-injection - 如何设置 Ninject DI 以创建 Hyprlinkr RouteLinker 实例
我有一个 MVC4 Web API 项目,我利用 Mark Seemann 的Hyprlinkr组件生成链接资源的 Uris。(例如客户 -> 地址)。
我已经按照 Mark 的关于使用 Web API 进行依赖注入的指南(针对 Ninject 进行适当更改)进行操作,但我不太清楚应该如何将IResourceLinker注入到我的控制器中。
按照 Mark 的指南,我的IHttpControllerActivator.Create创建方法如下所示:
Hyprlinkr 自述文件建议在这种方法中创建RouteLinker。不幸的是,我不确定如何使用 Ninject 注册它。
我不能像下面这样绑定,因为这会导致多个绑定:
我有这样的重新绑定工作:
但我担心更改 ninject 绑定图对于每个请求都可能是一件坏事。
实现这一目标的最佳方法是什么?
应佩奇库克的要求更新
我在这里使用重新绑定:
每个请求都会调用IHttpControllerActivator.Create。其余的绑定是以标准方式进行的,按照标准,我的意思是在使用Ninject.MVC3 nuget 包生成的类中。
我的控制器如下所示:
c# - ASP Web Api - IoC - 解析 HttpRequestMessage
我正在尝试使用 ASP.NET WebAPI 设置 Castle Windsor。
我也在使用 Hyprlinkr 包(https://github.com/ploeh/Hyprlinkr),因此需要将一个 HttpRequestMessage 实例注入到我的控制器的依赖项之一中。
我正在关注 Mark Seemann 的这篇文章 - http://blog.ploeh.dk/2012/04/19/WiringHttpControllerContextWithCastleWindsor.aspx,但我发现虽然 API 运行,但当我调用它时,请求只是挂起。没有错误信息。就好像它处于一个无限循环中。它挂在我的自定义 ControllerActivator 中对 Resolve 的调用
我在想我的一些城堡注册错误。如果我删除了上面文章中提到的那些,那么我可以成功调用 API(尽管没有我需要解决的依赖关系)
有任何想法吗?
代码如下
编辑****************附加信息****************
所以我设置了一个场景,控制器只将 HttpRequestMessage 作为 ctor 参数并发现:
这有效:
但是,这不是。
即当匿名对象具有称为“请求”的属性并且控制器ctor arg称为“请求”时。它以某种方式使控制器认为它的请求属性为空。这就是导致我看到的错误的原因:
无法重用“ApiController”实例。'ApiController' 必须为每个传入消息构建。检查您的自定义“IHttpControllerActivator”并确保它不会制造相同的实例。
在 System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancelToken) 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage 请求, CancellationToken cancelToken) 在 System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessage请求,CancellationToken 取消令牌)
阅读此内容 如何在不调用 setter 注入的情况下丰富 StructureMap 中的对象组合?
它解释了一个类似的场景。
当然,hyprlinkr 的 HttpRequestMessage 的 ctor arg 称为“request”,所以我确实需要使用该属性名称指定 anon 对象。
有任何想法吗?
asp.net-web-api - 如何使用 Hyprlinkr 生成指向 HTTP POST 操作的链接?
我正在尝试使用Hyprlinkr生成 HTTP Post 操作的 URL。我的控制器如下所示:
这条路线:
我希望得到一个简单的 URL:http://example.com/dosomething,但它不起作用。我尝试了两种方法:
1) routeLinker.GetUri(c => c.DoSomething(null))
- 抛出NullReferenceException
2) routeLinker.GetUri(c => c.DoSomething(new SomeDto()))
- 生成无效的 URL:
http ://example.com/dosomething?someDto=Namespace.SomeDto
更新: 在 github 上打开的问题: https ://github.com/ploeh/Hyprlinkr/issues/17
f# - 如何提供表达式> 在 F# 中,当方法有返回值时?
我正在尝试将一些 C# 代码转换为 F#。具体来说,我正在尝试将一些使用Hyprlinkr的代码转换为 F#。
C# 代码如下所示:
其中GetUri
方法定义为
并ImagesController.Get
定义为
在 F# 中,我正在尝试这样做:
这会编译,但在运行时会引发此异常:
System.ArgumentException 未被用户代码处理
HResult=-2147024809
Message='System.Void' 类型的表达式不能用于返回类型'Microsoft.FSharp.Core.Unit'
Source=System.Core
据我了解,F# 表达式是一个返回的表达式unit
,但它实际上应该是一个Expression<Action<T>>
, 'returning' void
。
我正在使用 F# 3.0(我认为 - 我正在使用 Visual Studio 2012)。
我该如何解决这个问题?
c# - 将 Hyprlinkr 与 Autofac 集成
我正在尝试将Hyprlinkr与 Autofac集成到 WebAPI 项目中。
我已经开始编写自定义IHttpControllerActivator
,但在尝试解析控制器时出现以下异常:
从请求实例的范围中看不到带有与“AutofacWebRequest”匹配的标记的范围。这通常表明注册为 per-HTTP 请求的组件正在由 SingleInstance() 组件(或类似场景)请求。在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身.
下面是这个类的样子:
如何解决生命周期问题?
asp.net-web-api - 如何使用 HyprLinkr 处理可为空的参数?
在 ASP.NET Web API 中,我有一个操作方法,如下所示:
如何在没有 optionalValue 参数的情况下使用 hyprlinkr 创建链接?
试过:
抛出 NullReferenceException,同样如此
TIA
hyprlinkr - 自定义 Hyprlinkr 以使用路由模板的名称
语境
鉴于以下路线
并使用 Hyprlinkr
的值href
如下所示:
问题
是否可以自定义 Hyprlinkr,href
如下所示:
也就是说,如果 Hyprlinkr 创建foo-bar-baz而不是foobarbaz会更好——类似于路由模板,即.foo-bar-baz/{id}