我正在尝试使用ServiceStack.Net实现具有多个可选参数的服务
目前我的路线看起来像这样
Routes.Add<SaveWeek>("/save/{Year}/{Week}");
Run Code Online (Sandbox Code Playgroud)
我想支持这样的uris:
/保存/ 2010/12 /星期一/ 4 /日/ 6 /日/ 7
即星期一= 4,星期二= 6,星期三= 7
但是我希望能够忽略几天,即调用服务的人可以决定是否要保存每天的每个值...
即像这样缺少参数值
?星期一= 4&周三= 7&周五= 6
当然,一种解决方案是使用以下路由,当我不想保存值时只传递0.
Routes.Add<SaveWeek>("/save/{Year}/{Week}/{Monday}/{Tuesday}}/{Weds}/{Thurs}/{Fri}/{Sat}/{Sun}");
Run Code Online (Sandbox Code Playgroud)
但是.....有没有更好的方法来实现这个功能?
在实例化PooledRedisClientManager?时,如何为Redis主机名指定用户名和密码?
var _redis = PooledRedisClientManager("my.redishost.com:1234");
Run Code Online (Sandbox Code Playgroud)
我特别需要将一个基于.NET的ServiceStack.Redis应用程序部署到AppHarbor,我正在使用Redis To Go进行Redis托管.
当我尝试反序列化这个无效的json字符串(最后}]遗漏):
[{"ExtId":"2","Name":"VIP sj?lland","Mobiles":["4533333333","4544444444"]
Run Code Online (Sandbox Code Playgroud)
通过做这个:
var result = JsonSerializer.DeserializeFromString<T>(str);
Run Code Online (Sandbox Code Playgroud)
ServiceStack json反序列化器接受该字符串,但它创建了一个错误的对象,因为我最终得到了一个具有以下值的C#对象:
ExtId : "2" // ok fine.
Name: "VIP sj?lland" // ok fine
Mobiles: ["4533333333","4544444444", "544444444"]// Aarg! An array with 3 objects ?!?
// There were only two in the JSON string.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,抛出异常而不是继续使用坏数据会好得多.因此我尝试使用:
JsConfig.ThrowOnDeserializationError = true;
Run Code Online (Sandbox Code Playgroud)
就在调用DeserializeFromString之前,但没有抛出任何异常.在1月份,我问这个问题配置ServiceStack.Text以抛出无效的JSON,答案是ServiceStack支持resrence并且我可以在GitHub中发出pull请求.
这仍然是这样吗?有没有人已经做过,省了我的麻烦?否则,我的时间表非常紧张,所以如果有人有一些代码或建议如何创建一个选项标志以使ServiceStack抛出反序列化错误,请回复此处,以便我可以更快地完成此操作.
为noob问题道歉.刚刚开始学习servicestack.我正在使用Razor的自托管控制台应用程序作为我的视图引擎,注册的"RegistrationFeature"插件和CredentialsAuthProvider通过表单发布以允许用户登录进行身份验证.
该SocialBootStrap应用程序使用MVC 3,并做了"FormsAuthentication.SignOut()",以允许用户注销.鉴于我正在使用自托管应用程序,我创建了一个LogoutService,它只执行Request.RemoveSession()并且看起来有效.
这是注销用户会话的正确方法吗?
我正在尝试使用ServiceStack以RESTful方式将文件返回到ServiceStack客户端.
我已经阅读了有关SO(此处和此处)的其他问题,建议使用HttpResult和FileInfo对象或MemoryStream来允许将ContentType标头更改为相关的文件类型.
当我通过浏览器调用服务时,这对我有用,正确的文件会自动开始下载.我如何使用其中一个ServiceStack客户端使用该文件?
我正在使用Request DTO并尝试使用类似的东西返回
return new HttpResult(new FileInfo("file.xml"), asAttachment:true) {
ContentType = "text/xml"
};
Run Code Online (Sandbox Code Playgroud)
例如,如何使用JsonServiceClient消耗它?
在我对具有服务堆栈的服务器进行跨域调用之前,我已成功通过身份验证并获取我的令牌.
现在我想再做一次调用来检索数据:
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader('Authorization', 'Basic ' + getToken());
},
type: "GET",
url: requestUrl,
xhrFields: {
withCredentials: true
},
async: true,
dataType: 'json',
crossDomain: true
})
Run Code Online (Sandbox Code Playgroud)
当我查看我的谷歌chrome dev工具控制台时,我看到了这个:
OPTIONS http://MyPc.company:82//customers 404 (Not Found)
OPTIONS http://MyPc.company:82//customers Invalid HTTP status code 404
XMLHttpRequest cannot load http://MyPc.company:82//customers.
Invalid HTTP status code 404 (index):1
Run Code Online (Sandbox Code Playgroud)
当我看到小提琴手时,我看到了这个要求:
Inspectors => Auth:没有授权标头.
检查员=>原始:
OPTIONS http://MyPc.company:82//customers HTTP/1.1
Host: MyPc.company:82
Connection: keep-alive
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Request-Method: GET
Origin: http://MyPc.company
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, …Run Code Online (Sandbox Code Playgroud) 刚刚下载了ServiceStack.Text以在我的ASP.NET中使用它.我有许多属性的类,并希望将其中五个(字符串,整数,二进制)序列化为JSON.任何人都可以发布简单的例子如何从我的类创建JSon对象?
如何强制__type信息在反序列化的JSON响应中呈现?我没有必要重新序列化这些数据,所以我更愿意删除它.ServiceStack似乎将此添加到我的模型的字典属性中.
这是使用ServiceStack和ServiceStack.Text.JsonSerializer
在工作中,我们在ServiceStack中进行了几个新的Web服务项目,并在其中一些项目中利用了Funq.我目前正在开发一个单独的项目,它将使用所述Web服务,并且想知道我是否有办法在我的项目中使用ServiceStack的Funq来解析我的依赖关系,以便使用我们正在使用的或多或少相同的模式开发我们的Web服务.
这可能吗?
我使用DotNetOpenAuth创建了一个OAuth2授权服务器,它工作正常 - 我正在使用资源所有者密码流,并成功地为访问令牌交换用户凭据.
我现在想要使用该访问令牌从ServiceStack API中的安全端点检索数据,我无法弄清楚如何执行此操作.我已经检查了ServiceStack附带的Facebook,Google等提供商,但目前尚不清楚我是否应该遵循相同的模式.
我想要实现的目标(我想!)是
GET /users/csmith/photosAuthorization: Bearer 1234abcd...步骤1和2正在运行,但我无法弄清楚如何将DotNetOpenAuth资源服务器代码与ServiceStack授权框架集成.
我是如何实现这一目标的?我在如何使用ServiceStack构建安全api作为OAuth2.0的资源服务器时发现了类似的StackOverflow帖子?但它不是一个完整的解决方案,似乎没有使用ServiceStack授权提供程序模型.
编辑:更多细节.这里有两个不同的网络应用程序.一个是身份验证/授权服务器 - 它不承载任何客户数据(即没有数据API),但公开了接受用户名/密码并返回OAuth2访问令牌和刷新令牌的/ oauth/token方法,还有提供令牌刷新功能.这是基于ASP.NET MVC构建的,因为它几乎与DotNetOpenAuth附带的AuthorizationServer示例相同.这可能会在以后更换,但现在它是ASP.NET MVC.
对于实际的数据API,我使用的是ServiceStack,因为我发现它比WebAPI或MVC更好地暴露了ReSTful数据服务.
所以在下面的例子中:

该客户端是用户的本地机器上运行的桌面应用程序,该验证服务器是ASP.NET MVC + DotNetOpenAuth和资源服务器是ServiceStack
需要的特定DotNetOpenAuth代码片段是:
// scopes is the specific …Run Code Online (Sandbox Code Playgroud)