我在调用web api方法时遇到404错误...
下面是我的代码
Web API Controller:
[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 API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "API Default",
routeTemplate: "webapi/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
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
我搜索并尝试了stackoverflow和其他来源的所有选项,但都是徒劳的
答案 0 :(得分:2)
我想出答案
实际上: 在Web API设置中: 我选择了:本地iis,localhost / webapi ...创建虚拟目录 所以我的路线是 本地主机/的WebAPI /的WebAPI /家/让 感谢Alex为您发布的帮助和可能的解决方案......
答案 1 :(得分:0)
我认为您需要将{action}
添加到您的路由模板中,或者尝试调用端点而不是像这样访问URL:
http://localhost/webapi/home
答案 2 :(得分:0)
这些只是我的个人经历,不是完整的指南,但对我有用。
在Visual Studio 2017/2019中发布
注意:如果WebApi可在Visual Studio调试器中使用,则并不意味着它也可在IE中使用。因此,您必须进行其他设置,请参见下文。
IIS本身必须配置为通常可与WebApis一起使用:
配置IIS应用程序池(计算机管理/服务和应用程序/ Internet信息服务(IIS)管理器/扩展计算机/应用程序池/添加应用程序池...)
身份:“ LocalSystem”
通常建议:“ ApplicationPoolIdentity”(默认)。然后,该用户必须在WebApi的发布目录上具有文件系统权限(读取和执行) (在我们的示例中为“ C:\ Develop \ MyWebApi \ published”),并且在所有目录上,WebApi都可能在以后寻址。 “ ApplicationPoolIdentity”的可能问题是它的伪用户“ IIS AppPool \ <池名称>”仅适用于本地计算机,而不适用于域。将权限分配给外部服务器的文件夹时,可能会导致问题。
注意:如果您仅需要本地文件夹的权限,并且想使用伪用户“ IIS AppPool \ <池名称>”,并且您的计算机位于域中,则默认情况下将找不到该用户。您必须先通过“位置...”按钮选择本地计算机。
对于标识“ LocalSystem”,系统用户“ IUSR”必须获得相应的文件系统权限。
第三个选择是使用密码将身份硬连线到本地用户。但这有一个缺点,就是必须总是在此处输入密码更改,而这常常被遗忘。
将其他选项保留为默认值。
配置网站(我仅尝试使用HTTP)
注意:
注意:
注意:
注意: