我正在使用OWIN来通过http服务从Windows服务中提供静态内容。 (为Windows服务嵌入Web管理工具)。
我遇到了一些奇怪的行为:
顺便说一下,此“web”文件夹中的这些文件被设置为“复制到输出目录”属性的“始终复制”。
任何人都知道出了什么问题?
请参阅此处的StartUp配置类
public class WebStartUp
{
public void Configuration(IAppBuilder app)
{
string staticFilesDir = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "web");
app.UseStaticFiles(staticFilesDir);
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
app.UseWebApi(config);
}
}
请在此处查看托管它的Windows服务...
public partial class MyService : ServiceBase
{
private IDisposable webApp;
private const string ServiceAddress = "http://localhost:2345";
public MyService()
{
}
protected override void OnStart(string[] args)
{
InternalStart();
}
internal void InternalStart()
{
webApp = WebApp.Start<WebStartUp>(url: ServiceAddress);
}
protected override void OnStop()
{
}
public static void Main()
{
#if DEBUG
var service = new MyService();
Console.WriteLine("starting");
service.InternalStart();
Console.ReadLine();
#else
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[] {
new RaceManagerService();
}
ServiceBase.Run(ServicesToRun);
#endif
}
}
答案 0 :(得分:2)
我想我知道出了什么问题:您使用的第三方框架是alpha或beta。你不应该根据你对他们的经验和他们的一般状态来依赖他们。
我创建了一个几乎相同的设置(link to project files)并看到了完全相同的结果。使用过的库还没有完成任务。
编辑:
我可以使用Microsoft.Owin.StaticFiles库的0.23.20815.0版本更加明确地运行它。我是从最新的Katana来源自己建造的。您可以在my GitHub page找到我的最新代码。
答案 1 :(得分:1)
我使用类似的配置:Windows服务作为带有WebApi和StaticFiles的OWIN主机。有了这个,我从来没有看到你的问题。它工作正常。
我使用的是Katana Nightly Builds的StaticFiles版本0.24.0-pre-20624-416。也许这也将解决你的问题。 另一个区别是,我只使用相对路径配置StaticFiles,而不是像你那样配置绝对路径。它应该没有任何区别,但是谁知道呢?
BTW:我在2个月前写过关于StaticFiles的博客:http://ritzlgrmft.blogspot.de/2013/06/owin-with-static-files-exception.html