我尝试将DateTime对象作为查询字符串参数传递给使用ServiceStack.net构建的Web服务方法.
传递时日期是正确的URL编码但我不断收到以下错误:
"Message":"KeyValueDataContractDeserializer: Error converting to type: String was not recognized as a valid DateTime.
Run Code Online (Sandbox Code Playgroud)
有关如何纠正此问题的任何想法?
以下是我传递的URL编码DateTime的示例:2%2f24%2f2012 + 5%3a13%3a02 + PM
我使用Funq工厂自动连接我的MVC控制器,我很好奇他们的终身管理是什么样的.
asp.net-mvc dependency-injection ioc-container inversion-of-control servicestack
我在使用Node.js编写的休眠客户端能够将数据(通过GET)发送到基于ServiceStack JSON的服务时遇到问题.它给了我一个序列化错误.但是,我已经将相同的JSON(由我的Node.js rest客户端生成)复制并粘贴到通过CURL发送的ServiceStack服务调用中,而ServiceStack没有出现JSON问题 - 再次...仅作为只要它来自CURL.
任何指针或任何人可以进一步启发的启示将不胜感激!
谢谢,
塔米
我在应用程序中使用OrmLite进行数据访问.在4个环境中的3个环境中,一切都按预期工作.
所有环境都在运行.net 4.5.数据库运行的版本不同.失败的环境是连接到sql server 10.50.2796,工作环境连接到sql server 10.50.4000.
System.Data*程序集的版本在无法正常工作的服务器上是相同的.
堆栈跟踪:
System.NullReferenceException:未将对象引用设置为对象的实例.位于服务堆栈的ServiceStack.OrmLite.ReadExtensions.ConvertToList [T](IDataReader dataReader)的lambda_method(Closure,Object,Object)中的C:\ src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\Expressions\ReadExtensions.cs:第151行.OrmLite.ReadExtensions.Select [T](IDbCommand dbCmd,Expression
1 predicate) in C:\src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\Expressions\ReadExtensions.cs:line 23 at ServiceStack.OrmLite.ReadConnectionExtensions.Exec[T](IDbConnection dbConn, Func2过滤器)在C:\ src\ServiceStack.OrmLite\src\ServiceStack.OrmLite\Expressions\ReadConnectionExtensions.cs:第26行
更新 我认为这是一个与我连接的sql server版本相关的错误.如果我在工作环境中更改连接字符串以使用运行10.50.2796的数据库,则会遇到相同的错误.
TIA,杰森
我刚刚开始熟悉ServiceStack并且已经开始使用FluentValidation了.我已经按照介绍并创建了一个小型Hello应用程序.
我的问题是,当我尝试验证请求DTO时,没有返回错误消息来描述验证失败的方法,只有空白的Json对象{}.
我自己,我认为验证是自动连接到DTO所以我不需要编写任何额外的代码.
答案可能是公然但我看不到它.任何帮助将不胜感激.我的代码如下:
namespace SampleHello2
{
[Route("/hello")]
[Route("/hello/{Name}")]
public class Hello
{
public string Name { get; set; }
}
public class HelloResponse
{
public string Result { get; set; }
}
public class HelloService : Service
{
public object Any(Hello request)
{
return new HelloResponse { Result = "Hello, " + request.Name };
}
}
public class HelloValidator : AbstractValidator<Hello>
{
public HelloValidator()
{
//Validation rules for all requests
RuleFor(r => r.Name).NotNull().NotEmpty().Equal("Ian").WithErrorCode("ShouldNotBeEmpty"); …Run Code Online (Sandbox Code Playgroud) 我想从存储库而不是服务类访问数据库(为了增加分离 - 不确定这是否有点过分)即
public class TodoRepository // : BaseRepository derive the class and inject IDbConnection somehow?
{
public List<Todo> GetByIds(long[] ids)
{
return Db.Select<Todos>(t => Sql.In(t.id, ids)); <-- how to get 'Db' in here
}
}
Run Code Online (Sandbox Code Playgroud)
服务基类已经允许使用'Db'对象通过ormlite直接访问数据库,因此:
public class Service : IService, IRequiresRequestContext, IServiceBase, IResolver, IDisposable
{
public virtual IDbConnection Db { get; }
}
Run Code Online (Sandbox Code Playgroud)
让我相信我可以这样做,所以我可以在派生类中使用'Db':
public class BaseRepository: IDisposable
{
public virtual IDbConnection Db { get; }
}
Run Code Online (Sandbox Code Playgroud)
我的AppHost中有这一行来传递连接字符串并注册存储库:
container.Register<IDbConnectionFactory>(c => new OrmLiteConnectionFactory(connectionString, SqlServerDialect.Provider));
container.Register(new TodoRepository());
Run Code Online (Sandbox Code Playgroud)
如何将IDbConnection注入或自动装载到BaseRepository类?我已经尝试在AppHost中注册并自动装配BaseRepository而没有运气.
我想知道ServiceStack注册路由的最佳做法是什么.
我已经阅读了一些在AppHost中这样做的地方,因为它将路线定义与DTO分离.但我看到的大多数例子都是使用装饰器模式.
哪个更好?是否有任何争论使用一个而不是另一个?
是否可以使用ServiceStack联接2个以上的表?我尝试过类似的方法,但是我需要链接evrything:
// Join PatientDetails and BedDetails
SqlExpression<PatientDetails.PatientDetails> q = _dbConnection.From<PatientDetails.PatientDetails>();
q.Join<PatientDetails.PatientDetails, BedDetails.BedDetails>((patient, bed) => patient.ByBedId == bed.BedDetailsId);
List<PatientDetails.PatientDetails> PatientBedJOIN = _dbConnection.Select(q);
// Join PatientSession and PatientDetails
SqlExpression<PatientSession> q1 = _dbConnection.From<PatientSession>();
q1.Join<PatientSession, PatientDetails.PatientDetails>((session, patientd) => session.ByPatientId == patientd.PatientDetailsId);
List<PatientSession> SessionPatientJOIN = _dbConnection.Select(q1);
Run Code Online (Sandbox Code Playgroud)
我正在使用OrmLite和Sqlite,谢谢
在Mac OS X上调试我的ServiceStack Web应用程序时,我间歇性地收到此错误.
我似乎无法确定它是什么,我尝试使用此命令杀死xamarin Web服务器:
ps aux | grep xsp4 | grep -v grep | awk '{print $2}' | xargs kill -9
Run Code Online (Sandbox Code Playgroud)
我已经尝试续订DHCP租约并清除DNS缓存.甚至尝试重启整个Mac.
请注意,代码似乎没有任何问题,因为当我使用此命令手动运行Xamarin Web服务器时:
xsp4 --root ~/Development/PROJ_FOLDER --port 8080
Run Code Online (Sandbox Code Playgroud)
它运行正常......我只是在从Xamarin Studio运行应用程序时才看到问题.
有任何想法吗?
我使用Nunit框架为ServiceStack apis编写单元测试.代码如下
public class AppHost : AppHostBase
{
public AppHost()
: base("SearchService", typeof(SearchService).Assembly)
{
}
}
Run Code Online (Sandbox Code Playgroud)
服务类如下
public class SearchService:Service
{
public SearchResponse Get(SearchRequest request)
{
// to stuff
Response.StatusCode = (int)HttpStatusCode.OK;
return SearchReponse;
}
}
Run Code Online (Sandbox Code Playgroud)
单元测试类如下
[TestFixture]
public class SearchServiceTests
{
private readonly ServiceStackHost appHost;
public SearchServiceTests()
{
appHost = new BasicAppHost(typeof(SearchService).Assembly)
{
}.Init();
}
[TestFixtureTearDown]
public void TestFixtureTearDown()
{
appHost.Dispose();
}
[Test]
public void TestMethod1()
{
var service = appHost.Container.Resolve<SearchService>();
var r= service.Get(new SearchRequest());
Assert.That(r, Is.Not.Null);
}
} …Run Code Online (Sandbox Code Playgroud) servicestack ×10
c# ×4
asp.net ×2
asp.net-mvc ×2
.net ×1
funq ×1
macos ×1
node.js ×1
nunit-3.0 ×1
repository ×1
sqlite ×1
unit-testing ×1