ServiceStack使用c#属性标记Web服务的休息路径.
例如
[RestService("/hello1")]
[RestService("/hello2")]
public class Hello
Run Code Online (Sandbox Code Playgroud)
我想在Hello类的doxygen输出中使Doxygen包含RestService属性的值.如果带有括号的完整行包含在输出文档中,我并不太关心漂亮的formattin.
有什么建议?
一个快速而肮脏的技巧比编写Doxygen扩展更好;)
干杯
Tymek
====编辑
doxygen用户答案的Python版本(因此可以在Windows上轻松工作)将是:
#!/usr/bin/env python
import sys
import re
if (len(sys.argv) < 2):
print "No input file"
else:
f = open(sys.argv[1])
line = f.readline()
while line:
re1 = re.compile("\[RestService\(\"(.*)\",.*\"(.*)\"\)]")
re1.search(line)
sys.stdout.write(re1.sub(r"/** \\b RestService: \2 \1\\n */\n", line))
#sys.stdout.write(line)
line = f.readline()
f.close()
Run Code Online (Sandbox Code Playgroud)
并且DOXYFILE将具有:
INPUT_FILTER = "doxygenFilter.py"
Run Code Online (Sandbox Code Playgroud) 如何在ServiceStack中传递复杂类型列表?例如,我的Request DTO看起来像这样:
//Request DTO
public class Test
{
public IList<Fund> Funds { get; set; }
}
public class Fund
{
public string Key { get; set; }
public int Percent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何通过HTTP get传递序列化对象?
http://localhost:49490/api/funds={ ?? }
Run Code Online (Sandbox Code Playgroud)
KeyValueDataContractDeserializer:转换为类型时出错:类型定义应以"{"开头,期待序列化类型"基金",字符串以:asdf开头
我怎样才能在ServiceStack.OrmLite代码中首先使用nText数据类型?
public class Email
{
[AutoIncrement]
public long ID { get; set; }
public DateTime Date { get; set; }
public string From { get; set; }
public string Subject { get; set; }
nText =>
public string Body { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我使用字符串数据类型,ormlite在数据库中生成nVarchar(8000)
我需要超过8000个字符的数据
构建以下身份验证解决方案的最佳方法是什么?
我有一个独立的(没有与MVC集成)ServiceStack REST服务层.此服务是我所有数据的入口点.客户端上没有数据存储.
我有多个客户端(ASP.Net MVC 4站点,MonoTouch应用程序,MonoDroid应用程序,Silverlight应用程序,MonoMac应用程序等).
我想在服务级别提供身份验证(Facebook,Twitter等),包括将用户存储在MongoDBAuthRepository中,但允许客户端提供登录UI(我想要这个吗?).例如,对于MVC站点,我想将远程ServiceStack身份验证服务(包括Facebook,Twitter)与MVC的身份验证系统集成.似乎应该在服务端进行实际身份验证,但客户端需要保持身份验证响应.
我已经阅读了wiki,查看了SocialBootstrap,并阅读了论坛,但我仍然对这应该如何以分布式方式工作感到困惑.
我们最新的一些Web服务应用程序一直在使用较新的3.9.x版本的ServiceStack,我们即将更新一个旧的应用程序从v3.5.x更新到使用3.9.44.0.3.5.x版本与New Relic的报道相当不错,但我们用3.9.x报道的版本到目前为止报道了New Relic.有时它报告流量低,但有时它只是平坦的.
我们有一个带有New Relic的开放票据,并被告知他们挂钩进入System.Web.HttpApplication.BeginRequest(),并且没有已知的时间表,可以在DotNet服务中针对任何可能的问题对ServiceStack支持进行任何更改.
所以我们很好奇ServiceStack中是否有任何更改会因任何原因绕过此挂钩?
或者让其他人使用New Relic,体验过这一点并找到了没有New Relic参与的解决方案?
我正在尝试扩展Service Stack的身份验证和注册功能.我的身份验证和注册工作正常,但我需要为每个用户添加一些自定义数据.从Service Stack的文档和我发现的其他各种帖子中,您可以使用UserAuth表中内置的MetaData列添加自己的数据.
我创建了一个CustomAuthRepository,所以我可以设置UserAuth的元数据属性,这是我的自定义仓库:
public class CustomAuthRepository : OrmLiteAuthRepository, IUserAuthRepository
{
public UserAuth CreateUserAuth(UserAuth newUser, string password)
{
newUser.Set(new LoginInfo
{
IsActive = false,
PasswordNeedsReset = true
});
return base.CreateUserAuth(newUser, password);
}
}
Run Code Online (Sandbox Code Playgroud)
这对于设置元数据非常有用,我最终在UserAuth表的元数据列中使用了LoginInfo对象的序列化版本.
现在我要做的是当用户进行身份验证时,我需要根据某些元数据更改AuthResponse.例如,如果用户尚未激活,我想返回带有属性的AuthResponseIsActive = get value from custom meta data
如果我可以将自定义元数据导入AuthSession,我想我可以这样做.在我的自定义凭证auth提供程序中,我可以根据AuthSession中的内容更改响应对象:
public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request)
{
var customUserAuthSession = (CustomUserAuthSession)session;
if (!customUserAuthSession.LoginInfo.IsActive)
{
return new
{
UserName = customUserAuthSession.UserName,
IsActive = customUserAuthSession.LoginInfo.IsActive
};
}
var isAuthenticated …Run Code Online (Sandbox Code Playgroud) 我有使用CorsFeature服务的设置,以及正在使用的文件APPHOST使用的函数收集到mythz在其他的答案提出的办法,:
private void ConfigureCors(Funq.Container container)
{
Plugins.Add(new CorsFeature(allowedOrigins: "*",
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS",
allowedHeaders: "Content-Type, Authorization, Accept",
allowCredentials: true));
PreRequestFilters.Add((httpReq, httpRes) =>
{
//Handles Request and closes Responses after emitting global HTTP Headers
if (httpReq.HttpMethod == "OPTIONS")
{
httpRes.EndRequest();
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,预请求过滤器仅针对某些服务请求触发.我们在服务中拥有的一个基本实体是一个问题实体,并且定义的自定义路由如下:
[Route("/question")]
[Route("/question/{ReviewQuestionId}", "GET,DELETE")]
[Route("/question/{ReviewQuestionId}/{ReviewSectionId}", "GET")]
Run Code Online (Sandbox Code Playgroud)
使用POSTMAN触发测试查询(全部使用OPTIONS动词),我们可以看到这将触发预请求过滤器:
http://localhost/myservice/api/question/
Run Code Online (Sandbox Code Playgroud)
但这不会:
http://localhost/myservice/api/question/66
Run Code Online (Sandbox Code Playgroud)
据推测,这是因为第二和第三条路线明确定义了它们接受的动词,OPTIONS不是其中之一.
是否真的有必要在限制所支持的动词的每个定义路线中拼出OPTIONS?
我在ServiceStack上有一些服务,并在这个项目中使用SignalR.
现在,我想保护集线器连接(仅对经过身份验证的用户进行访问),但我使用ServiceStack框架身份验证..(不是asp.net身份验证)和ServiceStack的会话(写入AuthUserId ih此会话和身份验证标志).
因此,当用户尝试连接到集线器时 - 集线器必须检查身份验证...
(是的,我可以从Hub请求Cookie(例如,方法OnConnected),但是在Authorize Attribute中检查身份验证 - 我必须在此类中进行(不在集线器中)
(http://www.asp.net/signalr/overview/signalr-20/security/hub-authorization)
所以,我创建了课程
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public class AuthorizeMyAttribute : AuthorizeAttribute
{
protected override bool UserAuthorized(System.Security.Principal.IPrincipal user)
{
//... how can i request Cookies? / or may be can access for ServiceStack session...
// and return true or false
}
}
Run Code Online (Sandbox Code Playgroud)
我能做些什么?谢谢!
嗨,我正在使用Ormlite运行ServiceStack,我遇到了这个错误.以前它工作正常.我不确定我所改变的是什么导致了这个错误.我刚刚使用了一个简单的db.Select()调用,它会抛出此错误.我尝试了各种方法,比如更新nuget包,清理和重建项目等,但它们都不起作用.
System.InvalidProgramException was caught
_HResult=-2146233030
_message=JIT Compiler encountered an internal limitation.
HResult=-2146233030
IsTransient=false
Message=JIT Compiler encountered an internal limitation.
Source=ServiceStack.OrmLite
StackTrace:
at ServiceStack.OrmLite.OrmLiteConfig.get_ExecFilter()
at ServiceStack.OrmLite.ReadConnectionExtensions.Exec[T](IDbConnection dbConn, Func`2 filter)
at ServiceStack.OrmLite.ReadConnectionExtensions.Select[T](IDbConnection dbConn, Expression`1 predicate)
InnerException:
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议可能出错的地方?
servicestack ×10
c# ×5
.net-4.5 ×1
asp.net ×1
authorize ×1
code-first ×1
doxygen ×1
newrelic ×1
signalr ×1
sql-server ×1