标签: servicestack

Service Stack/MVC:"AppHostBase.Instance已设置"错误 - 但无法理解为什么/如何防止

我正在尝试将ServiceStack实现到我的MVC3项目中,并遵循以下教程:http://www.servicestack.net/ServiceStack.Hello/

我的Global.asax.cs现在看起来像:

    public class MvcApplication : System.Web.HttpApplication
    {
        public class Hello
        {
            public string Name { get; set; }
        }

        public class HelloResponse
        {
            public string Result { get; set; }
        }

        public class HelloService : IService<Hello>
        {
            public object Execute(Hello request)
            {
                return new HelloResponse { Result = "Hello, " + request.Name };
            }
        }

        public class HelloAppHost : AppHostBase
        {
            //Tell Service Stack the name of your application and where to find your web services …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc servicestack

9
推荐指数
1
解决办法
3120
查看次数

ServiceStack OrmLite - 处理默认和计算列

ServiceStack OrmLite究竟是如何处理默认和计算列的?

具体来说,我收到了错误

The column "PointsAvailable" cannot be modified because it is either a computed column or is the result of a UNION operator.
Run Code Online (Sandbox Code Playgroud)

此列配置为SQL Server 2008数据库中的计算列.

OrmLite似乎对计算列做了一些事情,因为您可以将属性'[ServiceStack.DataAnnotations.Compute]'添加到模型中的属性.

进入代码,调用'OrmLiteDialetBase.cs'中的函数'ToInsertRowStatement'.当该函数检查是否设置了AutoIncrement属性时,它不检查是否设置了IsComputed属性.

我不知道这是一个错误,还是我错了.

c# sql-server servicestack ormlite-servicestack

9
推荐指数
2
解决办法
2562
查看次数

使用ravendb id的ServiceStack路由

我有一个ID为的实体

public string ID {get;set;}    
activities/1
Run Code Online (Sandbox Code Playgroud)

(来自RavenDB).

我在ServiceStack AppHost中注册了以下路由

Routes
    .Add<Activity>("/activities")
    .Add<Activity("/activities/{id}");
Run Code Online (Sandbox Code Playgroud)

我正在使用骨干应用程序POST和PUT到我的REST服务.

开箱即用的事情:

  • id属性被序列化为json,作为"activities/1"
  • id属性被编码为"活动%2F1"的路由
  • ServiceStack优先于基于URL的id属性,因此我的字符串获取的编码值对RavenDb没有用处.

我知道的选项:

  • 更改主干以发布到"/ activities"并让JSON Serialiser启动
  • 更改RavenDb ID生成以使用连字符而不是斜杠
  • 使我的Id属性在集合上解析为编码的%2F并转换为斜杠

两者都有缺点,我要么在我的API中丢失RESTful,这是不可取的,或者我不遵循RavenDb约定,这通常是明智的狐狸.另外,我个人喜欢使用斜杠.

所以我想知道在servicestack中是否还有其他选项我可以用来解决这个涉及较少妥协的问题?无论是Serialiser定制还是通配路由都在我脑海中......

rest ravendb servicestack

9
推荐指数
1
解决办法
523
查看次数

ServiceStack元数据页面的默认URL不正确

我正在使用ServiceStack开发REST api,并且在默认重定向到元数据页面时遇到问题.我已将服务发布到公共IIS7服务器上的虚拟文件夹"myservice".

URL"http:// mydomain/myservice/whatever"按设计工作,"http:// mydomain/myservice/metadata"显示元数据页面(带有正确的链接URL).

问题是,当访问"http:// mydomain/myservice"时,它会重定向到"http:// localhost/myservice/metadata",而不是"http:// mydomain/myservice/metadata".

如何配置元数据网址?

metadata servicestack

9
推荐指数
1
解决办法
1145
查看次数

为什么ServiceStack的新API会提升"对象"返回类型而不是更强类型的东西?

例如,如果我有标准的请求和响应DTO,通过链接IReturn<T>,具有如下所示的服务方法签名的原因是什么,如各种在线示例中所示(例如这一个,尽管并非始终如一):

public object Get(DTO.MyRequest request)
Run Code Online (Sandbox Code Playgroud)

而不是:

public IList<DTO.MyResponse> Get(DTO.MyRequest request)
Run Code Online (Sandbox Code Playgroud)

object这里的返回类型只是为了支持输出流的gzip压缩等服务功能,这会导致输出为字节数组吗?似乎人们希望从这些所谓的"动作"调用中获得适当的更强的返回类型,除非我遗漏了一些常见的场景或用例.

servicestack

9
推荐指数
1
解决办法
1389
查看次数

多租户ServiceStack API,同样的部署来响应不同主机名上的请求?

我们使用多租户ServiceStack创建API .我们希望进行基于DNS的负载平衡和路由,而不是通过反向代理(如nginx或haproxy)来解决问题.

我们有请求DTO具有租户参数.ServiceStack(及其SwaggerFeature)允许我们定义自定义路由,并记录DTO,以便我们可以从路径,查询,标题或正文中读取值.

我们如何(最好)连接东西,以便DTO属性也可以从主机名模式中读取值?那么,让Route从匹配的主机名和路径中获取值?

我们想要像这样的网址

  • https://{tenant}.{DNS zone for environment}/{rest of path with tokens}

此外,DNS区域将根据我们所处的环境而变化 - 对于我们使用的非生产(比如说)testing-foobar.com和我们使用的生产real-live.com.理想情况下,我们能够通过单个路由声明支持两者(我们更喜欢在运行时装饰Request DTO而不是命令式声明AppHost.Init).

binding routing load-balancing servicestack

9
推荐指数
1
解决办法
1019
查看次数

接收大数据时,ServiceStack会抛出StackOverflowException

我使用ServiceStack的JsonServiceClient和Silverlight 5从我的ASP.Net服务器接收JSON数据.它适用于简短的JSON字符串,但是当涉及到非常大量的数据时,会抛出StackOverflowException ServiceStack.ServiceClient.Web.AsyncServiceClient.ReadCallBack<>.

所以我检查了GitHub上的最新源代码,并注意到数据是从块中以块状方式读取的,大小为4096字节.问题是这个方法读取一个块并告诉流完成后递归调用自身.我们收到的数据越多,发生的递归调用就越多.这就是当接收到的数据太大时应用程序崩溃的原因.

思路:

  • 将方法重构为迭代而不是递归.对于所有这些有条件的回报,等待,尝试捕获等等,这似乎是一项艰巨的任务.
  • 增加块大小.我不知道4096这里有什么理由,所以我宁愿不单独做这件事.

无论如何,在我下载所有源代码,自己修改和编译之前,我想听听你对此的看法.这是一个错误还是我错了?

.net c# stack-overflow silverlight servicestack

9
推荐指数
1
解决办法
660
查看次数

How best to manage Redis connections using ServiceStack?

I work on a few .NET web apps that use Redis heavily for caching along with ServiceStack's Redis client. In all cases I've got Redis running on the same machine. I've used both BasicRedisClientManager and PooledRedisClientManager (always implemented as singletons) and have had some issues with both approaches.

With BasicRedisClientManager, things would work fine for a while, but eventually Redis would start refusing connections. Using netstat we discovered that thousands of TCP connections to the default Redis port were …

connection-pooling redis servicestack

9
推荐指数
1
解决办法
3150
查看次数

使用ServiceStack而不是ASP.NET WebAPI的任何好处

我正在计划一个将由浏览器/ JavaScript和Android App使用的Web API(也向其他潜在客户开放).虽然我读到使用ServiceStack和WCF有很多好处,但我不确定它是否仍然是我们拥有ASP.NET WebAPI的更好选择.我发现这个问题是ServiceStack作者将它与WCF进行比较,但是说"WebApi与WCF的不同之处在于它鼓励REST-ful API设计."

那么,ServiceStack仍然是比ASP.NET WebAPI更好的选择,为什么呢?

另外,ServiceStack如何适应OWIN/Katana故事?

servicestack asp.net-web-api

9
推荐指数
0
解决办法
5318
查看次数

更新服务堆栈Redis列表

有没有正确的方法来更新IRedisList?使用下面的示例代码,我可以修改它以删除列表,更新比萨饼并重新添加列表,但这感觉不对.命令行文档很漂亮,但这是一个比我更大的项目,我不完全确定从哪里开始寻找.

    public void UpdatePizza(Pizza pizza)
    {
        using (var redisClient = new RedisClient(Host, Port))
        {
            IRedisTypedClient<Pizza> redis = redisClient.As<Pizza>();

            IRedisList<Pizza> pizzas = redis.Lists["pizzas:live"];

            var toUpdate = pizzas.First(x => x.Id == pizza.Id);

            toUpdate.State = pizza.State;

            //??How to save 
        }                   
    }
Run Code Online (Sandbox Code Playgroud)

c# redis servicestack

9
推荐指数
1
解决办法
3809
查看次数