我有一个实现多个接口的类
public class AwesomeThingClass: IAwesome<Thing>, IAwesomeThing {
// parameterized constructor, so can't use RegisterAutowiredAs
public AwesomeThingClass(IClient client, string connectionString) {}
}
Run Code Online (Sandbox Code Playgroud)
它通过使用信号量封装了基数有限的多线程操作(我的意思是,只允许 N 个这样的操作同时运行)。
但是,如果我使用类似的东西向 IoC 注册它
container.Register<IAwesome<Thing>>(cont => new AwesomeThingClass(cont.Resolve<IClient>(), connStr))
container.Register<IAwesomeThing>(cont => new AwesomeThingClass(cont.Resolve<IClient>(), connStr))
Run Code Online (Sandbox Code Playgroud)
我最终得到了两个可以使用IAwesome<Thing>and解决的实例IAwesomeThing,它允许运行 2*N 操作。我绝对需要为两个接口解析相同的实例。除了手动实例化类和注册实例之外,还有什么方法可以实现这一点吗?
这个问题本质上类似于Register the same type to multiple links,但它并不是重复的,因为我正在使用 ServiceStack IoC 容器(Func在撰写本文时),而该问题是关于Unity
我正在编写一个 RESTful 服务,其中一个端点将检查资源是否处于活动状态。
我正在努力让 RESTful 资源名称符合标准
我的路线 GET /api/v1/items/{itemid}/isActive -- 应该是什么?我正在做的(或想做的)就是在响应中发送 True/False。
或者我必须发送 404 响应吗?---> 这是一个简单的 get ,如果 notFound 则返回 404 ?
我正在尝试使用新的.WithSqlFilter()扩展方法将“WITH (NOEXPAND)”提示添加到针对我的索引视图生成的 select 语句中。但是,输出 SQL 将提示放在 WHERE 子句之后,而不是 FROM 子句之后。我的客户 DTO 也有[Alias("CustomerInfo")]. 这是预期的行为还是错误地生成了 SQL?
var customer = db.From<Customer>()
.Where(ci => ci.CustomerId == customerCode)
.WithSqlFilter(sql => IsSqlServer(db) ? sql + " WITH (NOEXPAND)" : sql);
return db.Single(customer);
Run Code Online (Sandbox Code Playgroud)
编辑:我需要 IsSqlServer 方法,因为我还有单元测试和其他使用 Sqlite 而不是 SQL Server 的代码,并且需要能够忽略基于连接的提示。
private bool IsSqlServer(IDbConnection db)
{
var dialect = db.GetDialectProvider();
return dialect is ServiceStack.OrmLite.SqlServer.SqlServerOrmLiteDialectProvider ||
dialect is ServiceStack.OrmLite.SqlServer.SqlServer2012OrmLiteDialectProvider ||
dialect is ServiceStack.OrmLite.SqlServer.SqlServer2014OrmLiteDialectProvider ||
dialect is ServiceStack.OrmLite.SqlServer.SqlServer2016OrmLiteDialectProvider;
}
Run Code Online (Sandbox Code Playgroud)
生成的SQL:
SELECT TOP 1 "CustomerId", "FirstName", …Run Code Online (Sandbox Code Playgroud) 我正在使用 Servicestack.text CSV 序列化程序将对象序列化为 CSV 格式。这是我尝试的方法
CsvSerializer.SerializeToString(MyObject)
Run Code Online (Sandbox Code Playgroud)
但它会转换为 CSV,包括这样的标题
ID、姓名、年龄\r\n13、Alex、45
但我不需要这些标题。有什么办法可以排除标题
当我设置身份验证功能重定向属性时,我在访问安全页面时没有应用它.例如,我将身份验证功能设置为重定向以使用页面中的自定义登录.
authFeature.HtmlRedirect = "http://localhost/SimpleService/login";
Run Code Online (Sandbox Code Playgroud)
但是,如果我转到安全控制器,这个重定向永远不会被应用,它总是使用服务堆栈默认的"/ login".它正在使用的重定向甚至不包括SimpleService的原始站点名称.以下样品控制器.
[Authenticate]
public class PrivateController : ControllerBase
{
public ViewResult SecurePage()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
我也试图覆盖Authenticate属性上的重定向,但无济于事.有没有人有任何想法我可能做错了什么?
[Authenticate(HtmlRedirect = "http://localhost/SimpleService/login")]
public class PrivateController : ControllerBase
{
public ViewResult SecurePage()
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在设置我的frist ServiceStack站点,并且从我的URL访问查询字符串值时遇到一些问题
public override object OnGet(MyModel.Product request)
{
if (request.ItemID != null)
{
return Repo.MyRepo.GetProduct(request.ManufacturerID, request.ItemID);
}
return Repo.MyRepo.GetProducts(request.ManufacturerID, request.Page, request.PageSize, request.tStamp);
}
Run Code Online (Sandbox Code Playgroud)
参数Page,PageSize和tStamp不是我对象的属性,但我需要它们来调用我用来获取数据的SP.我怎样才能访问这些?好像我在这里错过了一些非常简单的东西.
上个月刚刚发现了ServiceStack,我非常喜欢使用这个优秀的框架.真的厌倦了WCF设置和静态方法原型设计!
我有个问题 !
我创建了一个类:允许使用以下路径显示一个事件或事件列表的事件:
[Route("/events")]
[Route("/events/{Id}")]
public class Event
{
public ushort Id { get; set; }
public string FromDate { get; set; }
public string ToDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但我还想使用相同的路线列出2个日期之间的事件.实际上路线只采用Id作为参数,但我想添加另一条指定FromDate的路线:我认为这样的事情会起作用:/ events/01-01-2012/10-01-2012为了获得2个日期之间的所有事件但是这是行不通的.
是否可以定义允许根据不同参数定义不同路径的路径(取自DTO)?
我是管理路线的新手,并且非常想知道如何根据不同的参数定义不同的过滤方式.
谢谢您的帮助 !令人敬畏的工作Demis!
这是DTO
public class Employee
{
public int EmployeeID { get; set; }
public string EmployeeName { get; set; }
public string EmployeeeAddress { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是回应
public class EmployeeResponse
{
public List<Employee> listofemp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这是服务堆栈服务
public class EmployeeServices:Service
{
public dbRepo<Employee> objEmploye; //Repository (which is working fine)
public EmployeeServices()
{
objEmploye = new dbRepo<Employee>();
}
public object getAll(Employee obj)
{
var objlist = new EmployeeResponse {listofemp = objEmploye.GetAll().ToList()};
return objlist.listofemp;
}
}
Run Code Online (Sandbox Code Playgroud)
这是AppHostBase类
public …Run Code Online (Sandbox Code Playgroud) 我希望不要在这里含糊不清,但我刚刚为ServiceStack做了一个NuGet更新,从版本4.0.22更新到4.0.31,项目编译得很好但是一旦部署到iis我得到这个错误时我点击了网站.
程序集'ServiceStack,Version = 4.0.31.0,Culture = neutral,PublicKeyToken = null'类型'ServiceStack.Host.AspNet.AspNetRequest'中的方法'get_Cookies'没有实现.
想知道是否有其他人有此错误?
我正在使用调用ThirdParty API JsonServiceClient。
var client = new JsonServiceClient(ServiceURL);
var response = client.Get<Output>("Search?id=" + id);
Run Code Online (Sandbox Code Playgroud)
输出是类表示来自第三方API的响应。我能够正确获得输出。但是我想捕获此API响应的StatusCode。我怎样才能做到这一点?
注意我尝试了WebHttpResponse对象而不是Output(response class)。但是我希望statuseCode应该是Output类的属性,而不是的参数
WebHttpResponse。有什么办法可以做到这一点?