IIS 7无法路由请求:错误404,找不到文件

时间:2014-05-28 09:01:38

标签: iis-7 asp.net-web-api owin

我创建了我的第一个owin / web.api REST服务。 一些非常简单的东西只是为了测试一些功能。

我已经使用Visual Studio 2013创建了一个空项目并安装了这些软件包:

  • Microsoft.AspNet.WebApi.Client
  • Microsoft.AspNet.WebApi.Core
  • Microsoft.AspNet.WebApi.Owin
  • Microsoft.Owin
  • Microsoft.Owin.Diagnostics
  • Microsoft.Owin.Host.SystemWeb
  • Newtonsoft.Json
  • Owin

这是我的初创班:

[assembly: OwinStartup(typeof(OwinO.Startup))]
namespace OwinO
{
    public class Startup
    {
        public void Configuration(IAppBuilder app)
        {
        HttpConfiguration config = new HttpConfiguration();

        config.MapHttpAttributeRoutes();

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
            );

        app.UseWebApi(config);

        app.UseWelcomePage("/");
        app.UseErrorPage();
        }
   }
}

这是我的Api控制器:

[RoutePrefix("api/v1")]
public class TestController : ApiController
{
    [HttpGet]
    [Route("test")]
    public async Task<IHttpActionResult> Get()
    {
        string name = "Mister";
        string sayHello = string.Empty;

        Task<string> t = new Task<string>(() =>
        {
            sayHello = string.Format("Hello {0}", name);
            return sayHello;
        });
        t.Start();
        await t;

        return Ok(new string[] { sayHello });
    }
}

我的 Web.Config

<system.web>
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5.1" />
</system.web>

<system.webServer>
  <!--<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>

没有什么真的太复杂。

问题

此Web.Api服务无处不在。

我已经在我的电脑上使用IIS Express(8.0)和我的IIS 7.5(Windows 7)对其进行了测试。 我已经将它部署到我的托管服务提供商(Arvixe)并且它可以工作。 我已将其部署在服务器(Windows 2008 Server R2)上并且可以正常运行。

问题在它应该工作的地方不起作用。

我的客户端服务器是带有IIS 7的Windows 2008 sp2(32位)。

我设法启动了Owin但请求无法路由。

我无法访问该地址: [server ip] / api / v1 / test

我做了什么

我已检查过服务器的配置:

  • 安装了Framework 4.5.1。
  • IIS启动并运行(我已经安装了其他ASP.NET MVC Web应用程序)

我已尝试删除自定义路由前缀:

[RoutePrefix("api/v1")]

我已检查过IIS日志,请求到达IIS。 只是它不知道如何路线。

要交叉检查问题,我已经创建了一个没有Owin的简单web.api(使用相同的路由系统)并且它可以正常工作。

同样的Owin应用程序自托管作品。

1 个答案:

答案 0 :(得分:0)

没有解决此问题。

我花了很多时间试图找到解决方案或解决问题的方法。 服务器升级后,一切都按预期工作。