问题标签 [servicestack-razor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
64 浏览

c# - ServiceStack 如何识别新添加的文件夹?

在我的应用程序中,每当使用代码创建新的托管客户端时,我都会将一个新文件夹和一组文件放入我的目录中:

文件夹就像这个例子:

- www.MyDomain.com/MyClient

- www.MyDomain.com/MyClient/Default.cshtml

- www.MyDomain.com/MyClient/js/default.js

- www.MyDomain.com/MyClient/img/default.png

...等等

现在,如果您访问该MyClient路径,您会期望它会加载Default.cshtml,但您会得到一个 404 页面未找到。在您重新启动托管之前,如果您再次访问相同的路径,您将获得正确的Default.cshtml页面内容。

如果我理解正确,SS 仅在启动时构建 mvc 文件夹路径,那么在您重新启动主机之前它不会自动添加新文件夹?

有没有办法让 SS 知道文件夹结构的变化?

0 投票
1 回答
319 浏览

caching - ServiceStack 4:无法为静态内容添加 Expires Header

在我的 web.config 中,我正在尝试为静态内容添加缓存:

但是,当我运行 YSlow!我仍然得到“添加过期标题”的 F 级;因此,似乎图像、CSS 和 Javascript 文件等静态内容没有被缓存。

我如何在 ServiceStack 中完成此操作,因为我所做的 web.config 更改没有被 ServiceStack 接收;这在 ASP.NET MVC 中确实有效,但是如何使用过期标头服务器静态内容?

我也试过这个,但我的静态文件仍然没有被缓存。

0 投票
1 回答
246 浏览

servicestack - 升级到 4.x 后,ServiceStack Razor 无法正确呈现页面

将我网站上的 ServiceStack 库从 3.9.71 升级到 4.0.33 后,我注意到 ServiceStack.Razor 不再正确呈现页面。它似乎没有读取 layout.cshtml 文件。页面加载时没有布局,也没有错误或警告。我尝试将 layout.cshtml 文件放在 /Views/_layout.cshtml 和 /Views/Shared/_layout.cshtml 中。

除了在升级过程中替换软件包之外,我还对 Web.config 文件进行了必要的更改。这是我的 Web.config 文件中的一个片段。请让我知道这是否有帮助,或者我是否需要提供其他信息。任何帮助,将不胜感激。

<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor"> <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor" requirePermission="false" /> <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor" requirePermission="false" /> </sectionGroup> </configSections> <appSettings> <add key="webPages:Enabled" value="false" /> <add key="servicestack:license" value="{LICENSE_KEY_HERE}" /> </appSettings> <system.webServer> <handlers> <remove name="ChartImageHandler" /> <add name="ChartImageHandler" preCondition="integratedMode" verb="GET,HEAD,POST" path="ChartImg.axd" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> <add name="UrlRoutingHandler" preCondition="integratedMode" verb="*" path="UrlRouting.axd" type="System.Web.HttpForbiddenHandler, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> </handlers> <modules> <add name="RightsModule" type="UI.security.RightsHttpModule" /> <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> </modules> <validation validateIntegratedModeConfiguration="false" /> <rewrite> <rules> <rule name="Redirect domain.com to www" patternSyntax="Wildcard" stopProcessing="true"> <match url="*" /> <conditions> <add input="{HTTP_HOST}" pattern="www.google.com" /> </conditions> <action type="Redirect" url="http://google.com/{R:0}" /> </rule> </rules> </rewrite> </system.webServer> <!-- Required for MONO --> <system.web> <httpRuntime executionTimeout="3600" maxRequestLength="1048576" /> <httpModules> <add name="RightsModule" type="UI.security.RightsHttpModule" /> <add name="Airbrake" type="SharpBrake.NotifierHttpModule, SharpBrake" /> </httpModules> <httpHandlers> <!-- razor --> <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" /> <remove path="*.asmx" verb="*" /> <add path="*.asmx" verb="*" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" /> <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false" /> </httpHandlers> <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" /> <compilation targetFramework="4.5.1" debug="true"> <assemblies> <add assembly="System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A" /> <!-- add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/ --> </assemblies> <buildProviders> <add extension=".cshtml" type="ServiceStack.Razor.CSharpRazorBuildProvider, ServiceStack.Razor" /> </buildProviders> </compilation> <authentication mode="Forms"> <forms loginUrl="/optimize/login.cshtml" protection="All" timeout="1440" name="AudiencePoint" path="/app" requireSSL="false" slidingExpiration="true" defaultUrl="/optimize" cookieless="UseCookies" enableCrossAppRedirects="false" /> </authentication> <authorization> <allow users="*" /> </authorization> </system.web> <system.web.webPages.razor> <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc" /> <pages pageBaseType="ServiceStack.Razor.ViewPage"> <namespaces> <add namespace="ServiceStack.Html" /> <add namespace="ServiceStack.Razor" /> <add namespace="ServiceStack.Text" /> <add namespace="ServiceStack.OrmLite" /> <add namespace="UI" /> <add namespace="System" /> <add namespace="ServiceStack" /> </namespaces> </pages> </system.web.webPages.razor> <location path="optimize"> <system.web> <httpHandlers> <add path="*" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" /> </httpHandlers> </system.web> <!-- Required for IIS 7.0 --> <system.webServer> <modules runAllManagedModulesForAllRequests="true" /> <validation validateIntegratedModeConfiguration="false" /> <handlers> <add path="*" name="ServiceStack.Factory" type="ServiceStack.HttpHandlerFactory, ServiceStack" verb="*" preCondition="integratedMode" resourceType="Unspecified" allowPathInfo="true" /> </handlers> </system.webServer> </location> </configuration>

0 投票
1 回答
637 浏览

servicestack - 将参数传递给 DTO 之外的 HTML(视图)

我有一个用于 JSON 和 HTML 的服务。对于 HTML 渲染,我需要传递一些不适合包含在“通用 DTO”中的额外参数。例如,要使用哪个 CSS 文件或其他东西。

现在我一直将它注入到Request.Items数组中。有没有更好的方法,或者这是否足够好?

0 投票
0 回答
115 浏览

javascript - JavaScript 和 CSS 缩小器在 Servicestack 中不起作用

在最新版本的 Servicestack 中,引入了minifier。所以,在项目中尝试了它们。我能够缩小剃须刀页面,但不能缩小我添加到其中的 javascript 或 css 文件。

我已经复制粘贴了代码

在调试它时,我发现了这一点。它确实在缩小文件,但在某些方面它没有输出。

我也尝试过调试和发布,甚至使用已部署的版本。但是我作为参考添加的 JavaScript 和 CSS 仍然只是经过美化的格式。

难道我做错了什么?

0 投票
1 回答
32 浏览

servicestack - Razor 中单个值的降价

是否有任何快速方法可以在 ServiceStack Razor 页面中将值呈现为 Markdown?

例如 @MyText.ToMarkdown() 什么的?

0 投票
1 回答
254 浏览

twitter-bootstrap - ServiceStack 不渲染 Razor 视图,只看到快照

我已经用 Bootstrap 建立了一个非常基本的 ServiceStack 项目,我试图让它看到我的主页(Razor View),但它没有,所以我得到了我主页的快照。以下是我创建项目的步骤:

  1. 创建新项目“ServiceStack ASP.Net with Bootstrap”
  2. 打开 Nuget 服务器控制台以下载缺少的 Servicestack 包。
  3. 建造。
  4. 将 Services.cs 重命名为 MyStuffServices.cs 并将 Model.cs 重命名为 MyStuffModel.cs
  5. 添加到“AppHost.cs”:

    /li>
  6. 将“_layout.cshtml”从 /veiws/shared 移动到 /views 文件夹

  7. 将“Home.cshtml”添加到 /views
  8. 向 Home.cshtml 添加了次要文本
  9. 添加到 MyStuffService.cs

    /li>
  10. 添加到 MyStuffModel.cs:

    /li>
  11. 建造。
  12. 运行到 Internet Explorer - 获取快照页面。

这是我的 AppHost.cs

这是我的 Global.asax

我没有错误,包管理器说我没有丢失任何包。我觉得我缺少一个步骤,非常感谢任何帮助。

更新:在调试时执行时,这是我用 Internet Explorer 打开时得到的

0 投票
2 回答
107 浏览

architecture - 单独项目中的 ServiceStack Razor 文件

我有一个由 ServiceStack 后端组成的解决方案,具有常规设置(AppHost、ServiceInterface 和 ServiceModel),以及一个 winforms 应用程序和一个 iOS 应用程序使用服务。

现在我想做一个网络管理员,并正在寻找有关如何构建这个. 正如SS 文档所说,我想让 apphost 项目保持小规模

理想情况下,根级 AppHost 项目应保持轻量级且无需实现。

因此,我希望将网络管理员放在一个单独的项目中,其中包含所有 .cshtml 和内容以及所有内容。

这可能吗?不建议?有任何想法吗?

我能想到的一些替代方案是

  • single-page-app,让少数cshtml文件存在于 AppHost-project 中。这值得学习曲线吗?
  • 让单独的项目调用 Web 服务。考虑到他们生活在同一个网络服务器上,这不是非常无效吗?还是应该将其视为一种优势,因为它使一切都松散耦合?
0 投票
0 回答
99 浏览

architecture - 组合 ServiceStack 服务和网站的结构

在 Razor 支持下,ServiceStack 是一个用于创建 REST 服务和网站的完整框架。

在制作网站和服务时,您将如何构建它?不是不必要的复杂,但是当代码库变大时可以选择扩展(并使多个开发人员更容易避免处理相同的文件)。

我找到了一些零碎的东西,但想要一个完整的食谱/最佳实践

我发现的点点滴滴:

  • 插件,但是可以包含一个包含静态内容和剃须刀的整个网站吗?
  • .cshtml文件移动到另一个项目,然后将VirtualPathProvider参数包含到RazorFeature插件中(FileSystemVirtualPathProvider在 a中组合多个MultiVirtualPathProvider)。不要认为包含静态内容。
  • Razor 文件也可以作为编译视图包含在内
  • 单独的项目/解决方案:网站通过服务项目的 HTTP 调用服务(就像单页应用程序使用 AJAX 所做的那样)。虽然感觉无效,但当它驻留在同一主机上时涉及 HTTP。
  • 使用 JS 而不是 Razor 调用 Web 服务和构建内容的单页应用程序(学习曲线陡峭且没有智能感知?)。SPA 可以在一个单独的项目中,因为与服务的所有通信都是通过 WS HTTP。

PS:我知道这与我的其他问题有相似之处,但希望没关系

0 投票
1 回答
519 浏览

razor - ServiceStack 查看 403(禁止)

我已经设置了带有几个视图的 Service Stack Web 项目。我可以/Default.cshtml毫无问题地访问视图,但是当我尝试访问/Views/文件夹中的任何内容时,出现以下错误:

我已经查看了herehere以及许多其他答案,但我似乎无法弄清楚这一点。

这是我的看法:

还有我的 Web.Config:

我还添加?debug=requestinfo到请求的末尾,但在输出中看不到任何明显的错误。

任何帮助,将不胜感激。