我在SO和互联网上找到了很多相同的问题。然而,它们都不是我的问题的解决方案(至少是我目前看到的解决方案)。因此,我需要你的帮助。
我创建了一个WebApi
,其中包含以下列表,在从Visual Studio运行时它能够正常工作。但是,当我将其发布到自己机器的IIS上时,它就无法工作了。
它给出了HTTP Error 404.0 - Not Found错误。
- 操作系统:Windows 7
- IDE:Visual Studio 2013
- IIS:版本7.5
这是web.config
的system.webServer
和applicationSettings
部分:
<system.webServer>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
</system.webServer>
<applicationSettings>
<SampleAspNetWebApi.Properties.Settings>
<setting name="AuthorityAddress" serializeAs="String">
<value>https://localhost:44333/core</value>
</setting>
<setting name="SampleAspNetWebApi_SmsPanel_SMS" serializeAs="String">
<value>http://something.com/smsws/soap.asmx</value>
</setting>
</SampleAspNetWebApi.Properties.Settings>
</applicationSettings>
这是路由地图:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{action}",
defaults: new { id = RouteParameter.Optional }
);
最后,这是我为测试目的创建的控制器:
public class TestController : ApiController
{
public string Get()
{
return "Just for test";
}
}
更新:
Get
开头的公共方法,那么 [HttpGet] 就毫无用处了。 - Orel Erakiaspnet_regiis.exe
在IIS上注册ASP.NET 4。文档详细说明了如何操作,所以您应该能够搜索并知道如何操作。2)启用失败请求跟踪以跟踪404错误(如果仍然存在)。 - Lex Li