2016-05-25 83 views
2

我正在開發ASP.NET中的核心標籤助手(RC2),和渲染標籤助手時,我需要訪問請求對象,因爲我需要弄清楚什麼請求的URL是。如何從一個標籤助手來訪問Request對象

如此看來,在ASP.NET核心正確的方式來訪問Request對象是從HttpContext,並且獲得HttpContext我需要注入IHttpContextAccessor到我的標記助手。

所以,我想這一點,但以下情況例外都在運行時拋出:

出現InvalidOperationException:無法爲類型「Microsoft.AspNetCore.Http.IHttpContextAccessor」解析服務,同時試圖激活「Auth0.AspNetCore.Mvc .TagHelpers.LockTagHelper」。

是否有任何理由我不能將IHttpContextAccessor注入到我的Tag Helper中?

此外,有沒有可能是另一種方式來訪問標記助手裏面的Request對象?

編輯

看來問題是,由於最新的RC版,你必須手動配置DI處理IHttpContextAccessor。因此,在ConfigureServices,你必須撥打電話到

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我相信在早期測試版這是自動配置...

問題是,這是一個圖書館,我寧願不要指望用戶在他們的應用程序中配置此功能以使我的磁帶庫正常工作,因此任何其他更可靠的訪問請求對象的方式仍將被讚賞:)

+0

同樣的問題回答這裏http://stackoverflow.com/questions/37371264/asp-net-core-rc2-invalidoperationexception-unable-to-resolve-服務型/ 37373557#37373557 –

+0

@JoeAudette謝謝,我也只是注意到了這一點。我編輯了我的問題,指出這不是一個更好的解決方案,因爲我現在期望我的用戶只需使用我的Tag Helper就可以連接DI。仍然希望看看是否有另一種更可靠的方式來訪問請求對象,而不需要用戶連接東西 – jerriepelser

+0

你的問題說rc1,但afaik這不是rc1需要的,它改變了rc2,我同意它是這樣的一個常用的東西,他們應該保持默認註冊 –

回答

2

根據Pranav的response關於問題#4744關於相同主題在aspnet/mvc上GitHub:

您可以添加與ViewContextAttribute裝飾你的標籤幫手ViewContext類型的屬性。這將讓初始化爲執行頁的ViewContext

[ViewContext] 
public ViewContext ViewContext { get; set; } 

private HttpRequest Request => ViewContext.HttpContext.Request; 
+0

建議編輯消息。很好找! – TylerY86

相關問題