我创建了我的第一个owin / web.api REST服务。 一些非常简单的东西只是为了测试一些功能。
我已经使用Visual Studio 2013创建了一个空项目并安装了这些软件包:
这是我的初创班:
[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
我做了什么:
我已检查过服务器的配置:
我已尝试删除自定义路由前缀:
[RoutePrefix("api/v1")]
我已检查过IIS日志,请求到达IIS。 只是它不知道如何路线。
要交叉检查问题,我已经创建了一个没有Owin的简单web.api(使用相同的路由系统)并且它可以正常工作。
同样的Owin应用程序自托管作品。
答案 0 :(得分:0)
没有解决此问题。
我花了很多时间试图找到解决方案或解决问题的方法。 服务器升级后,一切都按预期工作。