我的WebApi在Visual Studio上运行正常,但在IIS

时间:2015-05-31 17:22:59

标签: c# asp.net-web-api iis-7.5 asp.net-web-api2

我可以在SO和互联网上找到许多相同的问题。然而,没有它们是我的问题的解决方案(至少到目前为止我见过的解决方案)。所以我需要你的帮助。

我创建了一个WebApi,其中包含以下列表,当我从Visual Studio运行它时,它可以正常工作。但是当我将它发布到我自己的机器的IIS时,它不起作用。

它为我提供了 HTTP错误404.0 - 未找到错误。

  • 操作系统:Windows 7
  • IDE:Visual Studio 2013
  • IIS:版本7.5

这是system.webServer的{​​{1}}和applicationSettings部分:

web.config

这是路线图:

          <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 }
    );

更新

Application Advance settings

enter image description here

1 个答案:

答案 0 :(得分:0)

在IIS / Websits的主机名中,您需要添加一些主机名,例如mytestapi(您从IIS设置中分享的最后一张图片)

然后将其添加到系统的主机文件(C:\ Windows \ System32 \ drivers \ etc \ hosts)中:

127.0.0.1 mytestapi

然后从这个网址测试你的api:

http://mytestapi/api/yourapicontroller