尝试在IIS中本地托管一个rest服务。在IIS Express中一切都正常,但当我尝试在IIS中本地托管时,路由就不工作了。
1.它被编译为x86,并托管在一个允许32位进程的应用池中。
1.我将站点Map到我的构建版本msbuild /p:Configuration=Release /p:ProcessorArchitecture=x86 -r:False
的二进制输出文件夹
1.我已启用Anonymous Authentication
1.绑定类型为http
,绑定到端口8000
1.我已经启用了目录浏览,请参见http://localhost:8000/
中的以下内容
1.然而,每当我尝试导航到http://localhost:8000/api/HeartBeat
时,我都会得到404 - Not Found
。
设置默认路由的WebApiConfig类。
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
这里是控制器
public class HeartBeatController : ApiController
{
// GET: api/HearBeat/5
public HttpResponseMessage Get()
{
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
如果我在IIS Express中运行此程序并导航到相同的URL,我会得到一个200。此外,我还尝试使用Get-WebUrl
在powershell中检查URL,它显示了一个ProtocolError,但我不知道是什么或为什么。IIS管理器似乎没有任何抱怨。
PS C:\Windows\system32> Get-WebURL -PSPath "IIS:\Sites\Test" | Format-list
Status : ProtocolError
ResponseUri : http://localhost:8000/
Description : Forbidden
1条答案
按热度按时间zlwx9yxi1#
有几件事出了差错。
1.通过Visual Studio发布与通过上面的生成命令创建的生成输出有很大不同。
1.我在Windows功能/IIS/应用程序开发功能x1c 0d1x下丢失
1.最后,仍然出现安全错误,需要向目录中添加ACL规则