AppHarbor + OWIN

时间:2014-04-16 22:33:57

标签: mono appharbor owin

我正在尝试制作AppHarbor OWIN应用。我使用了我正常运行的POC独立OWIN应用程序并将其迁移到使用IIS Pipeline(尝试OwinStartup和appSettings)

尽可能接近,Startup没有初始化。但是,我甚至不确定。构建成功,并复制相关的(一个)DLL。我得到了404,并在/页面上的股票标准“nginx”页面。我修改了appSettings以指向Startup而不是(除了实际上)使用OwinStartup属性,现在/ page是403.这是一个线索,但我还是迷路了

Startup看起来像这样:

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示例的直接副本。

有什么建议我如何将其转向运作?谢谢!

P.S。在Xamarin环境下开发,面向.NET 4.5

1 个答案:

答案 0 :(得分:0)

好的,AppHarbor支持很棒。他帮助我发现:

  • 必须在web.config编译块中设置targetFramework。我认识的新秀错误
  • 在AppHarbor构建过程中没有复制一些.config文件,因为我忽略了使用正确的构建操作/复制属性标记文件。我本人的另一个新手错误

这些是主要问题。现在很棒