找不到ApiController

时间:2018-03-05 14:36:25

标签: web-services xamarin xamarin.forms visual-studio-2017

根据此视频https://www.youtube.com/watch?v=IVvJX4CoLUY我已使用System.Web添加 ;使用System.Web.Http; ,但我仍然得到apicontroller无法找到的错误状态,等等,下面的图片是我面临的错误:

enter image description here

下面是我的代码:

using System;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
using System.Web.Http;
using System.Collections.Generic;


namespace UploadToServer.Server.Controllers
{
public class UploadsController : ApiController
{
    [Route("api/Files/Upload")]
    public async Task<string> Post()
    {
        try
        {
            var httpRequest = HttpContext.Current.Request;

            if (httpRequest.Files.Count > 0)
            {
                foreach (string file in httpRequest.Files)
                {
                    var postedFile = httpRequest.Files[file];

                    var fileName = postedFile.FileName.Split('\\').LastOrDefault().Split('/').LastOrDefault();

                    var filePath = HttpContext.Current.Server.MapPath("~/Uploads/" + fileName);

                    postedFile.SaveAs(filePath);

                    return "/Uploads/" + fileName;
                }
            }
        }
        catch (Exception exception)
        {
            return exception.Message;
        }

        return "no files";
    }
}

}

任何人都可以分享我的想法?

2 个答案:

答案 0 :(得分:0)

您的问题与Xamarin.Forms无关,但与WEB.API无关。您的Xamarin.Forms项目不能也不应该包含任何WEB.Api控制器。您的服务器端代码应该在一个单独的项目中。最简单的方法是使用特定模板创建一个单独的项目。

幸运的是,Microsoft有一个非常容易理解的指南:
https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api

但是我建议你改用Asp.NET Core:
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api

答案 1 :(得分:0)

您收到此错误,因为未安装运行API所需的软件包。 您必须手动从nuget.org下载此软件包。

遵循以下步骤-

  1. 检查Nuget.ORG是否在“软件包源”中列出。 工具-> Nuget软件包管理器->软件包管理器设置->软件包源。 如果“打包源”中未列出Nuget,则将源添加为“ http://nuget.org”并进行更新。
  2. 工具-> Nuget软件包管理器->软件包管理器控制台 选择“打包源”为“ Nuget”,然后单击“还原”

可以通过右键单击您的解决方案文件->管理Nuget程序包来完成相同的操作。 在Package Source中选择Nuget并还原。

所需的软件包将从nuget.org下载