问题标签 [servicestack-bsd]
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.
servicestack - 使用空(非空)请求对象使 JsonServiceClient 处理请求
如何配置 ServiceStack v3.xJsonServiceClient
以序列化空请求对象并调用服务?
我想得到一个例外,而是JsonServiceClient
返回null
。我在服务的顶部放了一个断点,它从来没有命中。但是当 name 属性不为空时,它会被命中。
结果消息:
这是失败的测试,它不会引发任何前任。
直接调用服务的等效测试通过。
DTO:
正如 Doug 指出的那样,这就解释了这一点。它无法创建没有名称值的有效路由。太糟糕了,当它无法创建有效路线时,它不会引发异常。返回null
并不表明问题的根源。
servicestack - ServiceStack:使用自托管应用程序重写 URL
我有一个自托管应用程序,index.html
它的根目录有一个文件。当我运行应用程序并转到localhost:8090
(应用程序托管在此端口上)时,URL 看起来像:http://localhost:8090/index.html
. 无论如何我可以将 URL 设置为:http://localhost:8090
在 index.html 页面上时?
笔记
我正在使用 ServiceStack 的 V3
servicestack - ServiceStack:更改自托管应用程序中所有路由的基本路径
我有一个设置了许多路由的自托管应用程序。与其遍历每一个并将路由更改为现有路由的/api/<route>
位置<route>
,我想知道是否可以/api
在启动应用程序时为每条路由添加前缀?我通过将其设置在 IIS 托管环境中知道它是可能的,web.config
但我不确定它是否可能在自托管环境中?
servicestack - ServiceStack:从 Javascript 访问会话信息
我正在使用 ServiceStack 和 AngularJs 创建一个 SPA。当用户登录时,我在 OnAuthenticated 方法中设置了一些变量:
所以我的问题是,我怎样才能在 Javascript 中访问这些信息?我需要创建一个公开它们的服务还是在 HTTP 标头中返回?
c# - ServiceStack:将索引页面的根 URL 设置为 /
几周前我问了一个关于这个的问题,在这里找到:ServiceStack: URL Re-writing with Self-Hosted application
但是,当我将此应用程序创建为 Windows 服务时遇到了问题。浏览应用程序的根 URL 时出现以下错误:
这是我所做的:
如果我把它拿出来并浏览我的服务的根目录,它可以工作,但我已经/index.html
附加到最后,因为我希望它就像我将它/
作为控制台应用程序托管时一样
asp.net-mvc-4 - 在 ServiceStack + MVC Web 应用程序中设置用户特定的文化
我需要为发送到使用ServiceStack 3
和编写的 Web 应用程序的每个 Web 请求设置用户特定的文化MVC 4
。
每个用户的文化都存储在他们在数据库中的个人资料中,我将其检索到我自己的IAuthSession
使用从CredentialsAuthProvider
. 所以我不关心浏览器的AcceptLanguage
标题,而是想在ServiceStack
从缓存中解析它之后立即将当前线程的文化设置为身份验证会话的文化属性。这对于ServiceStack
服务和MVC
控制器(源自ServiceStackController
)都必须发生。
完成上述任务的最佳方法是什么?
更新 1
我找到了一种方法来做到这一点,尽管我不相信这是最佳解决方案。
在派生所有服务的基础服务类中,我SessionAs<>
按如下方式覆盖了该属性:
UserAuthSession
我的 ServiceStack 的自定义实现在哪里IAuthSession
?它的LanguageCode
属性在登录时设置为存储在数据库中用户配置文件中的用户选择的 ISO 文化代码。
同样,在我的所有控制器派生自的基本控制器类中,我AuthSession
像这样覆盖了该属性:
这似乎工作正常,因为这两个属性在调用服务或执行控制器操作时始终如一地使用,因此在执行任何下游逻辑之前设置当前线程的文化。
如果有人能想到更好的方法,请告诉我。
更新 2
根据 Scott 的建议,我创建了一个自定义AuthenticateAndSetCultureAttribute
:
因为我只在用户通过身份验证时更改文化,所以(无论如何在我看来)在我们检查身份验证的同一个地方执行它是有意义的。
然后我用这个属性而不是原来的[Authenticate]
.
现在,当调用 SS 服务时,将Execute
执行属性的方法,并正确设置文化。但是,Execute
当调用 MVC 控制器操作时,永远不会执行,这真的很令人费解,因为 MVC+SS 怎么知道将未经身份验证的请求重定向到登录页面。
有什么想法,有人吗?
c# - OrmLite for ServiceStack 3 不支持可空枚举属性?
我正在使用 ServiceStack 3 和 OrmLite。我的一个数据类有一个可以为空的枚举属性,如下所示:
在我的 Oracle DB 中,该字段RESULT
是NULLABLE NUMBER
.
当我尝试这样检索时CallSession
:
我得到一个例外specified cast is not valid
。如果我将类中的字段类型切换为简单的int?
. 我认为 OrmLite 不支持可为空的枚举是否正确?
c# - ServiceStack:自托管未找到静态文件
我有一个位于以下 URI 的自托管服务:
注意:我想在/PassengerTracker
. 这是最好的方法吗?
我启用了 Razor 视图,并为我的文件中的 CSS 静态文件指定了 URL _Layout.cshtml
:
但是,这将返回 404。我已将其设置Copy to Ouput Directory
为Copy Always
编辑
如果我尝试:
我得到一个NotImplementedException
..
如果我更改listeningOn
为http://*:80/
. 我可以@Url.Content
很好地使用。
编辑 2
我根据下面的@Scott 评论尝试了以下操作:
但它返回 404:
我注意到它的推杆PassengerTracker
两次?
servicestack - ServiceStack Cookie 未在浏览器中设置
我有一个启用 Razor 的应用程序和这样的服务:
但是,当我尝试在我的 Razor 视图中访问该 cookie 时,它是空的:
当我浏览我的 cookie 时,我看不到任何内容Terminal
:
c# - 将服务限制为内部网络但负载均衡器?
在我们基于 ServiceStack (v3) 的 API 中,我们有一些仅供内部使用的服务,因此我们[Restrict(InternalOnly = true)]
在所有内部请求 DTO 上放置了一个属性。
问题是我们使用负载均衡,并且受限服务对每个人都可以公开访问,因为调用 API 的 IP 始终是负载均衡器的 IP,因此是内部 IP。
有什么办法可以规避这种情况,使内部服务仅限于内部 IP,负载均衡器的 IP 除外?