asp.netWebAPIで特定のリソースのURLを作成または生成する方法を探しています。これはApiControllerから継承するため、コントローラーで実行できます。したがって、UrlHelperを取得します。
ApiControllerのコンテキストからリソースURLを作成しようとしています。
asp.netWebAPIで特定のリソースのURLを作成または生成する方法を探しています。これはApiControllerから継承するため、コントローラーで実行できます。したがって、UrlHelperを取得します。
ApiControllerのコンテキストからリソースURLを作成しようとしています。
これが私がしたことです:
// given HttpContext context, e.g. HttpContext.Current
var request = new HttpRequestMessage(HttpMethod.Get, context.Request.Url) {
Properties = {
{ HttpPropertyKeys.HttpConfigurationKey, GlobalConfiguration.Configuration },
{ HttpPropertyKeys.HttpRouteDataKey, new HttpRouteData(new HttpRoute()) },
{ "MS_HttpContext", new HttpContextWrapper(context) }
}
};
var urlHelper = new UrlHelper(request);
UrlHelper クラスはどうですか:
System.Web.Http.Routing.UrlHelper;
System.Web.Mvc.UrlHelper
MVC には、ルーティング情報を受け入れる便利な静的メソッドがいくつかあります。または、RequestContext を渡すことによって作成されたインスタンスとして使用できます (ほとんどの MVC フィルターやその他のさまざまな場所で使用できます)。インスタンス メソッドは、まさに URL を生成するために必要なものでなければなりません。
HTTP は ControllerContext を受け入れます (これは、ほとんどの HTTP フィルターやその他のさまざまな場所でも使用できます)。
以前に使用したことがないため、ApiControllerについてはよくわかりません。その場合、これは冗長になる可能性がありますが、そうでない場合もあります。Global.asax.csファイル、特にRegisterRoutes関数を確認してください。最初に、次のマッピングが表示されます。
routes.MapRoute ("Default", "{controller}/{action}/{id}", new { controller = "MyController", action = "Index", id = "" });
したがって、デフォルトでは、アプリケーションは次の形式でルートを処理するように設定されています。
{ControllerName}/{ActionName}/{ResourceId}
次のように設定されたコントローラークラスを使用すると、その形式でリクエストを受信できるようになります。
class {ControllerName}Controller : ApiController
{
public ActionResult {ActionName} (string id)
{
// fetch your resource by its unique identifier
}
}