WebApi进入“IIS应用程序”导致403.18禁止错误

时间:2016-03-09 12:37:30

标签: asp.net api iis asp.net-web-api permissions

此方法有效:

IIS>网站>添加网站...

http://www.domain.com:<someport>/api/values

这不是:

IIS&gt;网站&gt; SomeWebSite&gt;添加应用程序......

http://www.domain.com/MyApplication/api/values

我的WebApiConfig:

public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute("DefaultApi", "api/{controller}");

    config.Formatters.Remove(config.Formatters.XmlFormatter);

    var jsonSettings = config.Formatters.JsonFormatter.SerializerSettings;
    jsonSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
}

ValuesController:

[RoutePrefix("api/values")]
public class ValuesController : ApiController
{
    [Route(""), HttpGet]
    public IHttpActionResult Get()
    {
        return Ok("Is working");
    }
}

我不知道错误的原因,我做了很多研究,但我找不到导致这种情况的原因。

顺便说一句,在开发环境中,这两种方式都有效。

http://localhost:<someport>/api/values

http://localhost/MyApplication/api/values

服务器具有IIS 8.5。

开发环境具有IIS 10。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

需要检查以解决此问题 -

1.检查您的操作系统类型[32位或64位]。 因为开发和部署服务器之间可能存在不匹配的问题

2.如果32位应用程序在64位操作系统上运行,反之亦然,那么特别是对于webapi,会出现错误。所以检查它。

3.如果部署服务器只有64位     然后使您的应用程序应用程序池启用32位应用程序 - 如果您的应用程序以32位开发,则提前设置为true,否则它必须为false

答案 1 :(得分:0)

这是发生了什么。

IIS也配置为运行PHP。我安装了Joomla。

经过一番调查后,我的一位朋友发现了一些导致与API冲突的网址重写规则。

规则已经修改,最后它现在正在运作。

感谢您的关注。