繁体   English   中英

ServiceStack:自助主机找不到静态文件

[英]ServiceStack: Self-Host Not finding static files

我有一个位于以下URI的自助服务:

const string listeningOn = "http://*:80/PassengerTracker/";

注意 :我想将其托管在/PassengerTracker 这是最好的方法吗?

我启用了Razor视图,并且在_Layout.cshtml文件中为CSS静态文件指定了URL,如下_Layout.cshtml

<link href="@Url.Content("~/Content/bootstrap.min.css")" rel="stylesheet" />

但是,这将返回404。我已将“ Copy to Ouput DirectoryCopy Always

编辑

如果我尝试:

<link href="@(Request.GetApplicationUrl() 
               + "/Content/bootstrap.min.css")" rel="stylesheet" />

我收到一个NotImplementedException ..

如果我将listeningOn更改为http://*:80/ 我可以使用@Url.Content很好。

编辑2

我按照下面的@Scott评论尝试了以下内容:

<link href="@(AppHost.Config.ServiceStackHandlerFactoryPath 
                      + "/Content/bootstrap.min.css")" rel=" stylesheet" />

但它返回404:

GET http://localhost:8090/passengertracker/PassengerTracker/Content/bootstrap.min.css 
404

我注意到它两次放置了PassengerTracker

在聊天讨论中,ServiceStack的静态文件处理程序似乎存在问题,因此您可以创建一个简单的服务,该服务本质上执行相同的任务并提供Content目录中的文件。

[Route("/content/{filePath*}", "GET")] 
public class ContentRequest : IReturnVoid 
{ 
    public string filePath { get; set; } 
} 

public class ContentService : Service 
{ 
    public void Get(ContentRequest request) 
    { 
        var fullPath = System.IO.Path.Combine(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), "Content", request.filePath); 
        Response.WriteFile(fullPath); 
        Response.End(); 
    } 
}

我希望这对您有用:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM