1
我试图用ServiceStack和Sitefinity V3.7sp3 net35实现一个简单的webservice。我使用这个网络config将ServiceStack添加为localhost/api。使用IService实现服务类以获取完整的项目新闻内容并注册路由的全局asax。结果总是零项。这与Sf论坛中的其他非常相似。更改ContentManager或者提供者总是返回零个零和零个数。我的SF允许多语言en,fr ..使用路径。许多人需要成为异步?当然可以有人帮助我使用服务堆来修复这个案例。ServiceStack和Sitefinity V3.7 webservices同步还是异步?
问候。
[Description("Find items by baseclass, or all default if no genre is provided")]
[RestService("/api/items")]
[RestService("/api/items/news")]
[RestService("/api/items/news/{provider}")]
[RestService("/api/items/news/{provider}/{language}")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Items
{
public string provider { get; set; }
public string language { get;set; }
IList ItemsList{ get; set; }
}
/// <summary>
/// Summary description for NewsResponse
/// </summary>
public class ItemsResponse
{
public ItemsResponse()
{
}
public ResponseStatus ResponseStatus { get; set; } //Automatic exception handling
public IList Items { get; set; }//return a list of objects
}
/// <summary>
/// Summary description for NewsServices
/// </summary>
public class ItemsService : ServiceStack.ServiceHost.IAsyncService<Items>
{
//public object Execute(Items request)// with IService
//{
// ItemsResponse response = new ItemsResponse();
// response.Items = ItemsList(request.provider, request.language);//request.provider
// return response;
// ALWAYS ZERO AS RESPONSE
//}
//ERROR ON HANDLER ?
object IAsyncService<Items>.ExecuteAsync(Items request)
{
ItemsResponse response = new ItemsResponse();
//if (request.provider != null)
response.Items = ItemsList(request.baseclass, request.provider, request.language);//request.provider
return response;
}
public IList ItemsList(string provider, string language)
{
if(provider==string.Empty)
provider = NewsManager.DefaultContentProvider;
if (language == string.Empty)
language = "es";
System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
NewsManager manager = new NewsManager(provider);
//Get items from this language
IList data = manager.Content.GetContent();
return data;
}
}
嗨查克,这些路径的响应正在工作,包括元数据。问题不在于此,而在于回应零事件的回应。我已经评论了Sycn代码。就像NewsManager.Contents.GetContents()没有时间在Sync代码中做出响应一样。 – user325558 2012-07-25 15:30:29
你删除了'request.provider'上的空检查,但可能没有补偿?首先将if改为if(string.IsNullOrEmpty(provider))provider = NewsManager.DefaultContentProvider' – 2012-07-25 23:06:50
thks chuck我已经重写了代码但始终是相同的问题,没有项目被重新使用。我可以看到没有错误和项目[{}]的快照页面。这些提供者正在使用ContentManager或NewsManager进行工作和测试,但并没有回退任何东西。测试其他语言。我要求我是否需要一个Async来返回数据,但在这种情况下,我需要更多的帮助来使用servicestack.BR。 – user325558 2012-07-26 12:46:31