Asp.net web api Web API 404错误

Asp.net web api Web API 404错误,asp.net-web-api,Asp.net Web Api,调用web api方法时出现404错误 下面是我的代码 Web API控制器: [EnableCors(origins: "*", headers: "*", methods: "*")] public class HomeController : ApiController { private HomeDataProvider homeDataProvider = new HomeDataProvider(); // GET api/<controller>

调用web api方法时出现404错误

下面是我的代码

Web API控制器:

[EnableCors(origins: "*", headers: "*", methods: "*")]
public class HomeController : ApiController
{
    private  HomeDataProvider homeDataProvider = new HomeDataProvider();

    // GET api/<controller>
    [AllowAnonymous]
    public IEnumerable<string> Get()
    {
        return new string[] { "value1", "value2" };
    }

[AllowAnonymous]
    [HttpPost]
    //[Authorization]
    public List<User> Test_API(HomeSearch searchParam)
    {
        List<User> Test_User = null;
        try
        {
            Test_User = homeDataProvider.Test_DataProvider(searchParam);
        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {

        }
        return Test_User;
    }
Web API Web.config

      <appSettings></appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
        <roleManager enabled="false" />
    <!--<roleManager defaultProvider="AspNetWindowsTokenRoleProvider" 
enabled="true" />-->
  </system.web>
  <system.webServer>
  <validation validateIntegratedModeConfiguration="false" />
  <modules runAllManagedModulesForAllRequests="true">
</modules>
  <handlers>
   </handlers>

      </system.webServer>

I am using windows 10, vs 2015, iis 10
url i am calling
http://localhost/webapi/home/get
Error: 404, static handler error

我使用的是windows 10,vs 2015,iis 10
我打电话来
http://localhost/webapi/home/get
错误:404,静态处理程序错误

我搜索并尝试了stackoverflow和其他源上的所有选项,但都没有成功

我认为您需要将
{action}
添加到路由模板中,或者尝试调用端点而不在URL中获取,如下所示:

http://localhost/webapi/home

我认为您要么需要将
{action}
添加到路由模板中,要么尝试调用端点而不进入URL,如下所示:

http://localhost/webapi/home
我找到了答案

实际上: 在Web API设置中: 我选择了:本地iis、本地主机/webapi。。。创建虚拟目录 所以我的路线是 localhost/webapi/webapi/home/get 感谢Alex的帮助和您发布的可能解决方案…

我找到了答案

实际上: 在Web API设置中: 我选择了:本地iis、本地主机/webapi。。。创建虚拟目录 所以我的路线是 localhost/webapi/webapi/home/get 感谢Alex提供的帮助和可能的解决方案…

在IIS(Windows 10)和localhost上发布WebApi 这些只是我的个人经历,不是一个完整的指南,但对我来说很有用

2017/2019年在Visual Studio中发布

  • 概要文件发布方法:文件系统
  • 目标位置指向要发布到的目录,即“C:\Develop\MyWebApi\published”
注意:如果WebApi在VisualStudio调试器中工作,并不意味着它也在IE中工作。因此,您必须进行其他设置,请参见下文

IIS本身必须配置为通常使用WebAPI:

  • 控制面板/程序/程序和功能/打开Windows功能 或离线/互联网信息服务/万维网服务/应用程序开发功能/选择除CGI之外的所有内容
配置IIS应用程序池(计算机管理/服务和应用程序/Internet信息服务(IIS)管理器/扩展计算机/应用程序池/添加应用程序池…)

  • 名称:可自由选择,即“WebApiLocalhost”
  • .Net CLR版本: 4.0(别担心,您的WebApi可以有更高的级别)
  • 标识:“本地系统”

    通常建议:“ApplicationPoolIdentity”(默认)。然后,该用户必须对WebApi的发布目录具有文件系统权限(读取和执行) (“在我们的示例中是C:\develope\MyWebApi\published”),在所有目录上,WebApi可能会稍后寻址。“ApplicationPoolIdentity”可能存在的问题是,它的伪用户“IIS AppPool\”只存在于本地计算机上,而不存在于域中。这可能会导致在为外部服务器的文件夹分配权限时出现问题

    注意:如果您只需要本地文件夹的权限,并且希望使用伪用户“IIS AppPool\”并且您的计算机位于域中,则默认情况下无法找到此用户。您必须首先通过“位置…”按钮选择本地计算机

    对于标识“LocalSystem”,系统用户“IUSR”必须接收相应的文件系统权限

    第三种选择是使用密码将身份硬连接到本地用户。但这样做的缺点是,密码更改总是必须在此处跟踪,这通常会被遗忘

将其他选项保留为默认值

配置网站(我只尝试了HTTP)

  • 绑定:HTTP,选择一个空闲端口,即8094,无IP地址,无主机 名字
  • 应用程序池:您的应用程序池,在我们的示例中:WebApiLocalhost
  • 物理路径:指向WebApi的“发布”目录,这里是“…MyWebApi/published”
注意:

  • %ApplicationPoolIdentity下IIS Webapplications中的LOCALAPPDATA% “LocalSystem”指向 “C:\Windows\system32\config\systemprofile\AppData\Local\”而不是 Vc:\Users\\AppData\Local\”。这意味着:如果您有其他 应用程序文件,如config.xmls或低于%LOCALAPPDATA%的类似文件, 确保它们也存在于IUSR的%LOCALAPPDATA%中
注意:

  • 系统用户“IUSR”必须具有对 WebApi的发布文件夹(在示例中) “C:\Develop\MyWebApi\published”)以及所有使用的文件夹 在WebApi应用程序中。因此可能是: “c:\Windows\system32\config\systemprofile\AppData\Local…”和 可能在外部目录上
注意:

  • 在特定于客户端的更改之后,尤其是在Javascript中 在新测试之前,必须删除浏览器缓存 (通过Ctrl-Shift-Del进行Chrome操作)
注意:

  • “c:\Users\\AppData\Local\Microsoft\WebsiteCache\”可能包含 应用程序文件的过期版本-我搜索了几个小时。 解决方案:删除以下特定于应用程序的文件夹…\WebsiteCache\ 定期
在IIS(Windows 10)和本地主机上发布WebApi 这些只是我的个人经历,不是一个完整的指南,但对我来说很有用

2017/2019年在Visual Studio中发布

  • 概要文件发布方法:文件系统
  • 目标位置指向要发布到的目录,即“C:\Develop\MyWebApi\published”
注意:如果WebApi在VisualStudio调试器中工作,并不意味着它也在IE中工作。因此,您必须进行其他设置,请参见下面的内容

IIS本身必须配置为通常使用WebAPI:

  • 控制面板/程序/程序和功能/打开Windows功能 或离线/互联网信息服务/万维网服务/应用程序开发功能/选择除CGI之外的所有内容
配置IIS应用程序池(计算机管理/服务和应用程序/Internet信息服务(IIS)管理器/扩展计算机/应用程序池