问题标签 [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.
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 知道文件夹结构的变化?
caching - ServiceStack 4:无法为静态内容添加 Expires Header
在我的 web.config 中,我正在尝试为静态内容添加缓存:
但是,当我运行 YSlow!我仍然得到“添加过期标题”的 F 级;因此,似乎图像、CSS 和 Javascript 文件等静态内容没有被缓存。
我如何在 ServiceStack 中完成此操作,因为我所做的 web.config 更改没有被 ServiceStack 接收;这在 ASP.NET MVC 中确实有效,但是如何使用过期标头服务器静态内容?
我也试过这个,但我的静态文件仍然没有被缓存。
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>
servicestack - 将参数传递给 DTO 之外的 HTML(视图)
我有一个用于 JSON 和 HTML 的服务。对于 HTML 渲染,我需要传递一些不适合包含在“通用 DTO”中的额外参数。例如,要使用哪个 CSS 文件或其他东西。
现在我一直将它注入到Request.Items
数组中。有没有更好的方法,或者这是否足够好?
javascript - JavaScript 和 CSS 缩小器在 Servicestack 中不起作用
在最新版本的 Servicestack 中,引入了minifier。所以,在项目中尝试了它们。我能够缩小剃须刀页面,但不能缩小我添加到其中的 javascript 或 css 文件。
我已经复制粘贴了代码
在调试它时,我发现了这一点。它确实在缩小文件,但在某些方面它没有输出。
我也尝试过调试和发布,甚至使用已部署的版本。但是我作为参考添加的 JavaScript 和 CSS 仍然只是经过美化的格式。
难道我做错了什么?
servicestack - Razor 中单个值的降价
是否有任何快速方法可以在 ServiceStack Razor 页面中将值呈现为 Markdown?
例如 @MyText.ToMarkdown() 什么的?
twitter-bootstrap - ServiceStack 不渲染 Razor 视图,只看到快照
我已经用 Bootstrap 建立了一个非常基本的 ServiceStack 项目,我试图让它看到我的主页(Razor View),但它没有,所以我得到了我主页的快照。以下是我创建项目的步骤:
- 创建新项目“ServiceStack ASP.Net with Bootstrap”
- 打开 Nuget 服务器控制台以下载缺少的 Servicestack 包。
- 建造。
- 将 Services.cs 重命名为 MyStuffServices.cs 并将 Model.cs 重命名为 MyStuffModel.cs
添加到“AppHost.cs”:
/li>将“_layout.cshtml”从 /veiws/shared 移动到 /views 文件夹
- 将“Home.cshtml”添加到 /views
- 向 Home.cshtml 添加了次要文本
添加到 MyStuffService.cs
/li>添加到 MyStuffModel.cs:
/li>- 建造。
- 运行到 Internet Explorer - 获取快照页面。
这是我的 AppHost.cs
这是我的 Global.asax
我没有错误,包管理器说我没有丢失任何包。我觉得我缺少一个步骤,非常感谢任何帮助。
更新:在调试时执行时,这是我用 Internet Explorer 打开时得到的
architecture - 单独项目中的 ServiceStack Razor 文件
我有一个由 ServiceStack 后端组成的解决方案,具有常规设置(AppHost、ServiceInterface 和 ServiceModel),以及一个 winforms 应用程序和一个 iOS 应用程序使用服务。
现在我想做一个网络管理员,并正在寻找有关如何构建这个. 正如SS 文档所说,我想让 apphost 项目保持小规模
理想情况下,根级 AppHost 项目应保持轻量级且无需实现。
因此,我希望将网络管理员放在一个单独的项目中,其中包含所有 .cshtml 和内容以及所有内容。
这可能吗?不建议?有任何想法吗?
我能想到的一些替代方案是
- single-page-app,让少数
cshtml
文件存在于 AppHost-project 中。这值得学习曲线吗? - 让单独的项目调用 Web 服务。考虑到他们生活在同一个网络服务器上,这不是非常无效吗?还是应该将其视为一种优势,因为它使一切都松散耦合?
architecture - 组合 ServiceStack 服务和网站的结构
在 Razor 支持下,ServiceStack 是一个用于创建 REST 服务和网站的完整框架。
在制作网站和服务时,您将如何构建它?不是不必要的复杂,但是当代码库变大时可以选择扩展(并使多个开发人员更容易避免处理相同的文件)。
我找到了一些零碎的东西,但想要一个完整的食谱/最佳实践。
我发现的点点滴滴:
- 插件,但是可以包含一个包含静态内容和剃须刀的整个网站吗?
- 将
.cshtml
文件移动到另一个项目,然后将VirtualPathProvider参数包含到RazorFeature
插件中(FileSystemVirtualPathProvider
在 a中组合多个MultiVirtualPathProvider
)。不要认为包含静态内容。 - Razor 文件也可以作为编译视图包含在内
- 单独的项目/解决方案:网站通过服务项目的 HTTP 调用服务(就像单页应用程序使用 AJAX 所做的那样)。虽然感觉无效,但当它驻留在同一主机上时涉及 HTTP。
- 使用 JS 而不是 Razor 调用 Web 服务和构建内容的单页应用程序(学习曲线陡峭且没有智能感知?)。SPA 可以在一个单独的项目中,因为与服务的所有通信都是通过 WS HTTP。
PS:我知道这与我的其他问题有相似之处,但希望没关系。