此方法有效:
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。
有什么想法吗?
答案 0 :(得分:0)
需要检查以解决此问题 -
1.检查您的操作系统类型[32位或64位]。 因为开发和部署服务器之间可能存在不匹配的问题
2.如果32位应用程序在64位操作系统上运行,反之亦然,那么特别是对于webapi,会出现错误。所以检查它。
3.如果部署服务器只有64位 然后使您的应用程序应用程序池启用32位应用程序 - 如果您的应用程序以32位开发,则提前设置为true,否则它必须为false
答案 1 :(得分:0)
这是发生了什么。
IIS也配置为运行PHP。我安装了Joomla。
经过一番调查后,我的一位朋友发现了一些导致与API冲突的网址重写规则。
规则已经修改,最后它现在正在运作。
感谢您的关注。