问题标签 [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.

0 投票
3 回答
709 浏览

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 包生成的类中。

我的控制器如下所示:

0 投票
2 回答
7756 浏览

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 对象。

有任何想法吗?

0 投票
3 回答
460 浏览

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

0 投票
3 回答
1121 浏览

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)。

我该如何解决这个问题?

0 投票
1 回答
262 浏览

c# - 将 Hyprlinkr 与 Autofac 集成

我正在尝试将Hyprlinkr与 Autofac集成到 WebAPI 项目中。
我已经开始编写自定义IHttpControllerActivator,但在尝试解析控制器时出现以下异常:

从请求实例的范围中看不到带有与“AutofacWebRequest”匹配的标记的范围。这通常表明注册为 per-HTTP 请求的组件正在由 SingleInstance() 组件(或类似场景)请求。在 Web 集成下,始终从 DependencyResolver.Current 或 ILifetimeScopeProvider.RequestLifetime 请求依赖项,而不是从容器本身.

下面是这个类的样子:

如何解决生命周期问题

0 投票
1 回答
48 浏览

asp.net-web-api - 如何使用 HyprLinkr 处理可为空的参数?

在 ASP.NET Web API 中,我有一个操作方法,如下所示:

如何在没有 optionalValue 参数的情况下使用 hyprlinkr 创建链接?

试过:

抛出 NullReferenceException,同样如此

TIA

0 投票
1 回答
51 浏览

hyprlinkr - 自定义 Hyprlinkr 以使用路由模板的名称

语境

鉴于以下路线

并使用 Hyprlinkr

的值href如下所示:

问题

是否可以自定义 Hyprlinkr,href如下所示:

也就是说,如果 Hyprlinkr 创建foo-bar-baz而不是foobarbaz会更好——类似于路由模板,即.foo-bar-baz/{id}