WebAPI自定义路由上的404

时间:2018-12-05 16:25:12

标签: reactjs asp.net-web-api

我真的为此感到挣扎

我有一个这样的动作控制器:

[HttpPost]
    [Route("api/SiteCollections/SetSiteCollectionActive")]
    public async Task<IHttpActionResult> SetSiteCollectionActive(string siteCollectionUrl)
    {
        var siteCollectionsStore = CosmosStoreFactory.CreateForEntity<TenantManagementWebApi.Entities.SiteCollection>();
        var allSiteCollections = await siteCollectionsStore.Query().Where(x => x.Title != null).ToListAsync();
        foreach (TenantManagementWebApi.Entities.SiteCollection sc in allSiteCollections)
        {
            sc.Active = false;
            await siteCollectionsStore.UpdateAsync(sc);
        }

        var siteCollection = await siteCollectionsStore.Query().FirstOrDefaultAsync(x => x.Id == siteCollectionUrl);
        if (siteCollection == null)
        {
            return NotFound();
        }

        siteCollection.Active = true;
        var result = await siteCollectionsStore.UpdateAsync(siteCollection);

        return Ok(result);
    }

并且从reactjs应用程序中,我正在尝试执行以下操作:

// rowSelection object indicates the need for row selection
        const rowSelection = {
            onChange: (selectedRowKeys, selectedRows) => {
                if(selectedRows[0].Url != undefined){
                    console.log(selectedRows[0].Url);
                    const options = { 
                        method: 'post'
                    };

                    adalApiFetch(fetch, "/SiteCollections/SetSiteCollectionActive?siteCollectionUrl="+selectedRows[0].Url.toString(), options)
                        .then(response =>{
                        if(response.status === 200){
                            Notification(
                                'success',
                                'Site Collection set to active',
                                ''
                                );
                        }else{
                            throw "error";
                        }
                        })
                        .catch(error => {
                        Notification(
                            'error',
                            'Site Collection not activated',
                            error
                            );
                        console.error(error);
                    });
                }
            },
            getCheckboxProps: record => ({
                type: Radio
            }),
        };

        return (
            <Table rowSelection={rowSelection} columns={columns} dataSource={this.state.data} />
        );

但是,我总是会收到此错误:

enter image description here

一切似乎正确

路由配置

  public class RouteConfig
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }

0 个答案:

没有答案