【发布时间】:2014-04-16 22:33:56
【问题描述】:
我正在尝试制作 AppHarbor OWIN 应用程序。我使用了我正在运行的 POC 独立 OWIN 应用程序并将其迁移到使用 IIS 管道(同时尝试 OwinStartup 和 appSettings)
据我所知,Startup 没有初始化。但是,我什至不确定。构建成功,它复制了相关的(一个)DLL。我得到了 404 和 / 页面上的股票标准“nginx”页面。我修改了 appSettings 以指向 Startup 而不是(实际上是)使用 OwinStartup 属性,现在 / 页面是 403。这是一个线索,但我还是迷路了
启动看起来像这样:
using Owin;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using System.IO;
using Microsoft.Owin;
using Microsoft.Owin.Extensions;
[assembly: OwinStartup(typeof(PGO_6.Startup))]
namespace PGO_6
{
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
appBuilder.Use((context, next) =>
{
TextWriter output = context.Get<TextWriter>("host.TraceOutput");
return next().ContinueWith(result =>
{
output.WriteLine("Scheme {0} : Method {1} : Path {2} : MS {3}",
context.Request.Scheme, context.Request.Method, context.Request.Path, getTime());
});
});
appBuilder.Run(async context =>
{
await context.Response.WriteAsync(getTime() + " My First OWIN App");
});
// Configure Web API
var config = new HttpConfiguration();
config.Routes.MapHttpRoute("DefaultApi", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
appBuilder.UseWebApi(config);
}
static string getTime()
{
return DateTime.Now.Millisecond.ToString();
}
}
}
所以,几乎完全是样板代码。 {controller} 部分直接来自我的其他功能 POC。另一个是从 MSDN 示例中直接复制的。
有什么建议可以让我实现这个功能吗?谢谢!
附言在 Xamarin 环境下开发,针对 .NET 4.5
【问题讨论】: