我有一个自托管服务,位于以下URI:
const string listeningOn = "http://*:80/PassengerTracker/";
注意:我想在/PassengerTracker
托管它。这是最好的方法吗?
我启用了Razor视图,我已经为我的_Layout.cshtml
文件中的CSS静态文件指定了这样的URL:
<link href="@Url.Content("~/Content/bootstrap.min.css")" rel="stylesheet" />
但是,这将返回404.我已将Copy to Ouput Directory
设置为Copy Always
如果我尝试:
<link href="@(Request.GetApplicationUrl()
+ "/Content/bootstrap.min.css")" rel="stylesheet" />
我得到NotImplementedException
..
如果我将listeningOn
更改为http://*:80/
。我可以使用@Url.Content
罚款。
我根据以下@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
两次?
答案 0 :(得分:3)
在聊天讨论中,您的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();
}
}
这应该对你有用,我希望:)