我在一个宁静的服务环境中,我们使用ServiceStack作为我们的服务框架.此时,我需要直接从服务进行重定向,一旦我尝试从我的Get方法执行它就会失败,因为我认为我的Get函数看起来像这样:
public override object OnGet(ShareDTO request)
{
HttpContext.Current.Response.Redirect(@"http://www.google.com");
return new object();
}
Run Code Online (Sandbox Code Playgroud)
可能是因为首先它试图重定向然后它试图返回一个值,但这只是猜测.我不确定它是否甚至可以在服务环境中使用,因为每当我使用Response.Redirect时,它总是一直是.NET aspx页面,并且从未在服务环境中尝试过.
有什么想法吗?
我想将ORMLite替换为EF5,请不要问我为什么:P ...所以我在网上搜索并且没有找到关于如何实际执行此操作的信息.
我是否需要改写ORMLiteConnectionFactory成EFConnectionFactory在的global.asax.cs注册?它实现起来似乎很多而且非常复杂,因为它IOrmLiteDialectProvider OrmLiteConfig与所有这些相关联,并且它似乎并不正确,因为SS通常对所有问题都有一个简单的答案.例如,如果我想将Funq更改为另一个DI提供程序,则相当容易.
ORMLite是武器的固定选择还是我可以调整的灵活选项?请帮忙.
我正在尝试使用hello world示例和自托管示例来学习ServiceStack.我正在请求JSON内容.
我在响应标头中注意到以下内容:
ASP.Net项目中托管的基本服务:
HTTP/1.1 200 OK
Server: ASP.NET Development Server/10.0.0.0
Date: Wed, 10 Apr 2013 12:49:46 GMT
X-AspNet-Version: 4.0.30319
X-Powered-By: ServiceStack/3.943 Win32NT/.NET
Cache-Control: private
Content-Type: application/json; charset=utf-8
Content-Length: 16 <-------------------------------------
Connection: Close
Run Code Online (Sandbox Code Playgroud)
相同的基本服务,自托管(命令行):
HTTP/1.1 200 OK
Transfer-Encoding: chunked <-------------------------------
Content-Type: application/json; charset=utf-8
Server: Microsoft-HTTPAPI/2.0
X-Powered-By: ServiceStack/3.943 Win32NT/.NET
Date: Wed, 10 Apr 2013 12:48:50 GMT
Run Code Online (Sandbox Code Playgroud)
看来自托管的多样性并没有缓冲它的反应?这是性能还是兼容性问题?
如何在使用自托管方法时打开缓冲?
非常感谢.
我有一个asp.net mvc4 Web应用程序,它使用C#编写的API消耗数据数据,并在Apache/mod_mono的Linux机器上托管
客户端应用程序是用C#/ asp.net编写的 - 它运行在不同的Web服务器上,也就是Linux/Apache/mod_mono.我不确定这些细节在这种情况下是否重要,但我认为任何背景都可能有所帮助.
导致这个问题的问题:AppHostBase实例未设置 - 帮助我更加了解这一切是如何组合在一起的.
我相信我现在应该问的正确问题是:一旦我在servicestack中创建一个会话(在API服务器上),我该如何正确地重新连接它?
根据之前问题的答案,我在客户端应用程序的auth控制器中使用了这段代码:
var authService = AppHostBase.Resolve<AuthService>();
authService.RequestContext = System.Web.HttpContext.Current.ToRequestContext();
var AuthResponse = authService.Authenticate(new Auth
{
provider = "credentials",
UserName = user.user_id,
Password = user.password,
RememberMe = true
});
Run Code Online (Sandbox Code Playgroud)
这将返回ResolutionException:
无法解析ServiceStack.ServiceInterface.Auth.AuthService类型的必需依赖项.
在让客户端在asp.net应用程序中工作时,我可能会缺少一些简单的东西吗?
如果问题太模糊,我会道歉,并乐意提供更多信息.
更新:
这是AuthController - 请原谅这个烂摊子,自从我上一篇文章以来,我一直在尝试一些事情:
{
public partial class AuthController : BaseController
{
JsonServiceClient client = new ServiceStack.ServiceClient.Web.JsonServiceClient("<TheAPIurl>");
// GET: /Login/
public ActionResult login()
{
if (Session["IsAuthenticated"] != null)
{
ViewData["Result"] = Session["IsAuthenticated"];
}
return View();
} …Run Code Online (Sandbox Code Playgroud) 我们开始使用servicestack v4,请放心,客户端没有许可限制.至少这是我从servicestack的下载页面中读出的内容.
我们正在根据mythz 在servicestack上回答这个问题来构建我们的项目如何构建api.
通用客户端按预期工作(到目前为止)而不设置许可证,但是当同事使用.Dump()方法创建针对服务的测试客户端时,他遇到了此异常:
已达到'20 ServiceStack.Text类型'的免费配额限制.请参阅https://servicestack.net升级到商业许可证或访问https://github.com/ServiceStackV3/ServiceStackV3以恢复到免费的ServiceStack v3.
让我们说:.Dump() - 方法不是问题,我们可以不用它:)但是,我真的不喜欢这些突然的例外!他们突然爆炸你的项目,达到某种许可限制.最后一次这样的事情发生了,它是在一个ormlite集成测试中.一切正常,然后KABOOM,你必须将你的许可证添加到你的NUnit测试项目.
这个框架中还有其他问题吗?我们是否可以向我们的API消费者推荐使用servicestack客户端进行连接,还是会突然回来困扰我们?我完全理解对框架进行许可的必要性,但这一切都归结为我不相信现在是我服务核心的框架!
什么可以自由使用客户端包及其依赖关系,什么不能?
你有任何和解的话吗?是否会删除ServiceStack.Client-mines,或者我们是否应该建议所有使用servicestack.client-package的客户购买许可证以避免他们的应用程序突然崩溃,如果我们在POCO类中添加另一个属性?如果ServiceStack.Client不是"免费",而是"免费"包,那么如果在某种配额下,我怎么知道调用方法呢?
在我的应用程序中,我使用自定义请求筛选器以使用基本身份验证对用户进行身份验证.我想使用我已注册的请求记录器,如下所示:
Plugins.Add(new RequestLogsFeature { EnableSessionTracking = false });
Run Code Online (Sandbox Code Playgroud)
当我在/ requestlogs上执行请求时,我收到以下错误:
{
"Results": [],
"ResponseStatus": {
"ErrorCode": "Invalid Role",
"Message": "Invalid Role",
"StackTrace": "[RequestLogs: 10.08.2014 19:29:03]:\n[REQUEST: {Skip:0}]\nServiceStack.Common.Web.HttpError: Invalid Role\r\n at ServiceStack.ServiceInterface.RequiredRoleAttribute.AssertRequiredRoles(IRequestContext requestContext, String[] requiredRoles)\r\n at ServiceStack.ServiceInterface.Admin.RequestLogsService.Any(RequestLogs request)\r\n at ServiceStack.ServiceHost.ServiceRunner`1.Execute(IRequestContext requestContext, Object instance, TRequest request)",
"Errors": []
}
}
Run Code Online (Sandbox Code Playgroud)
如何强制请求记录器使用我的基本身份验证请求筛选器并忽略我不使用的角色?
我正在研究ServiceStack中的ORMLite,我在这里尝试的是调用一个存储过程,该存储过程又返回许多行,这些行肯定不会绑定到任何域对象,但也可能有或没有dto对象来映射用.我想知道我是否可以将它绑定到一个类型.但是,听起来ORMLite目前不支持动态类型绑定.ORMLite目前是否支持?
我们正在使用ServiceStack开发一个项目(喜欢它),但需要一些奇怪问题的帮助。在我们的项目中,我们使用辅助方法抛出或返回带有ErrorResponse和ResponseStatus对象的各种类型的HttpError。
它遵循此处描述的模式。像这样:
protected HttpError BusinessError(string summaryMessage = "Some generic validation summary.")
{
return new HttpError(HttpStatusCode.BadRequest, "MyValidationType", summaryMessage)
{
Response = new ErrorResponse
{
ResponseStatus = new ResponseStatus
{
ErrorCode = "MyValidationType",
Message = summaryMessage,
Errors = new List<ResponseError>()
},
}
};
}
Run Code Online (Sandbox Code Playgroud)
在服务电话中,我们将这样使用它:
throw BusinessError("Help I've fallen and can't get up!");
Run Code Online (Sandbox Code Playgroud)
这会起作用,我们将其馈送到ss-validation JS库中以呈现我们的验证消息。很好
问题在于,现在ServiceStack不会将HttpError的任何详细信息序列化到响应中。我们得到的只是一个带有400状态代码,“ MyValidationType”错误代码和空JSON响应的响应{}。
我已经尝试过使用抛出/返回错误以及将服务方法的返回类型切换为objectetc的组合,但是似乎没有什么不同。老实说,我不确定我们在项目中可能发生了什么更改而导致这种行为。
对于可能导致此问题的任何建议或建议,我将不胜感激。
嗨,所以我的朋友给了我客户的现有项目,它有太多的错误.我一直在调试应用程序,只是浏览这行代码
class func saveFile(#data: NSData, filename: String, directory: NSSearchPathDirectory = .DocumentDirectory) -> Bool {
var file = filePath(filename, directory: directory)
return data.writeToFile(file, atomically: true)
}
Run Code Online (Sandbox Code Playgroud)
注意到了#?到底究竟是#什么?
这也是功能的截图#.
附加信息:我认为他们使用了这个库服务栈,我认为它只适用于xamarin.
我已经将Web服务迁移到.NET Core 2.0,它可以正常工作,但是在以json字符串获取响应时遇到问题。
api上的方法:
[HttpGet]
[ProducesResponseType(typeof(string), 200)]
[ProducesResponseType(typeof(EntityNotFoundErrorResult), 404)]
public async Task<IActionResult> GetCurrenciesAsync()
{
var result = await service.GetByTypeAsync(ObjectType.Currency.ToString());
return Ok(result);
}
Run Code Online (Sandbox Code Playgroud)
返回正确的json为result:
"{\"elements\": [{\"Id\": \"1\", \"Symbol\": \"PLN\"},{\"Id\": \"2\", \"Symbol\": \"SIT\"}]}"
Run Code Online (Sandbox Code Playgroud)
然后在客户端上,我正在使用服务堆栈来获取我的货币作为字符串:
public virtual IEnumerable<CurrencyData> GetCurrencies()
{
string response = null;
try
{
response = api.Get<string>("/Currencies");
}
catch (Exception e)
{
}
return string.IsNullOrEmpty(response) ? null : JsonConvert.DeserializeObject<TempCurrencyClass>(response).elements;
}
Run Code Online (Sandbox Code Playgroud)
而response看起来像这样:
"\"{\\\"elements\\\": [{\\\"Id\\\": \\\"1\\\", \\\"Symbol\\\": \\\"PLN\\\"},{\\\"Id\\\": \\\"2\\\", \\\"Symbol\\\": \\\"SIT\\\"}]}\""
Run Code Online (Sandbox Code Playgroud)
因此JsonConvert.DeserializeObject抛出反序列化异常:
Newtonsoft.Json.JsonSerializationException
Run Code Online (Sandbox Code Playgroud)
但是当我反序列化对刺痛和目标的回应时,它起作用:
var …Run Code Online (Sandbox Code Playgroud) servicestack ×10
c# ×4
web-services ×2
.net ×1
.net-core ×1
json ×1
orm ×1
performance ×1
self-hosting ×1
session ×1
swift ×1
web ×1
xcode ×1