我正在尝试使用我的通配符http处理程序来处理*.cshtml页面,但请求永远不会到达我的处理程序,因为它看起来像是被我发现通过此StackTrace存在的WebPageHttpModule拦截:
[HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.]
System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application, Action`1 monitorFile, Func`2 fileExists, Func`2 createInstance, IEnumerable`1 supportedExtensions) +88
System.Web.WebPages.ApplicationStartPage.ExecuteStartPage(HttpApplication application) +287
System.Web.WebPages.WebPageHttpModule.StartApplication(HttpApplication application, Action`1 executeStartPage, EventHandler applicationStart) +113
System.Web.WebPages.WebPageHttpModule.StartApplication(HttpApplication application) +71
System.Web.WebPages.WebPageHttpModule.Init(HttpApplication application) +156
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +431
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +194
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +339
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +253
[HttpException (0x80004005): Exception of type 'System.Web.HttpException' was thrown.]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +8972180
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +97
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) …Run Code Online (Sandbox Code Playgroud) 刚刚了解消息队列和Redis MQ,优秀的框架.
我知道您必须使用.RegisterHandler(...)来确定哪个处理程序将处理消息队列中的消息/事件类型.
所以,如果我有EventA,EventB等我应该有一个处理这些事件的服务,例如:
public class DomainService : Service {
public object Any(EventA eventA) {...}
public object Any(EventB eventA) {...}
}
Run Code Online (Sandbox Code Playgroud)
那么这些应该只创建队列/ redis列表吗?
另外,如果我想要发生一系列事件,那么例如一个类型为EventA的消息也有一个处理程序,它发送一个电子邮件,提供早期链接的处理程序是否成功?
我正在尝试迁移到使用 MSBuild Pack支持使用 .csproj 生成项目 NuGet 包,其中在开发过程中使用本地 .dll 来构建项目,但需要替换/交换它们以在生成的项目中引用外部 NuGet 包使用 MSBuild“打包”项目时的 .nuspec。
我能找到的该用例最接近的记录示例是Replacing one library from a Restore graph ,其中建议您可以替换外部 NuGet 引用:
<PackageReference Include="Newtonsoft.Json" Version="9.0.1">
<ExcludeAssets>All</ExcludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
它会覆盖包以引用本地.dll:
<Reference Include="Newtonsoft.Json.dll" />
Run Code Online (Sandbox Code Playgroud)
我正在尝试做类似的事情,项目应该针对本地构建.dll's,这些本地项目是从依赖的 TeamCity/CI 构建中作为工件注入的:
<Reference Include="..\..\lib\net45\ServiceStack.Interfaces.dll" />
<Reference Include="..\..\lib\net45\ServiceStack.Text.dll" />
<Reference Include="..\..\lib\net45\ServiceStack.Common.dll" />
Run Code Online (Sandbox Code Playgroud)
但是当ExcludeAssets=All按照文档使用时:
<PackageReference Include="ServiceStack.Common" Version="5.0.0">
<ExcludeAssets>All</ExcludeAssets>
</PackageReference>
Run Code Online (Sandbox Code Playgroud)
PackageReference 不会在生成的依赖项列表中导出,例如:
<group targetFramework=".NETFramework4.5" />
Run Code Online (Sandbox Code Playgroud)
我最接近获得首选行为的是使用ExcludeAssets="compile",这样我的本地项目就不会针对它进行构建,除了此行为也会导出到 .nuspec 中:
<group targetFramework=".NETFramework4.5">
<dependency id="ServiceStack.Common" version="5.4.0" exclude="Compile,Build,Analyzers" />
</group>
Run Code Online (Sandbox Code Playgroud)
我只想避免在本地构建它,但将其作为正常依赖项导出。这种方法的另一个问题是我需要它引用尚未发布到 NuGet 的包(因为所有包都是锁定步骤发布的),例如:
<!-- …Run Code Online (Sandbox Code Playgroud) 我有一个json如下:
"[{"a":"b","c":"d"},{"a":"e","c":"f"},{"a":"g","c":"h"}]"
Run Code Online (Sandbox Code Playgroud)
现在我想把它变成匿名类型"foo"的对象列表
var foo=new { a=string.empty , c=string.empty };
Run Code Online (Sandbox Code Playgroud)
代码是:
ServiceStackJsonSerializer Jserializer = new ServiceStackJsonSerializer();
dynamic foos = Jserializer.Deserialize<List<foo.GetType()>>(jsonString);
Run Code Online (Sandbox Code Playgroud)
但没有工作.
更新:
更换ServiceStack用JavascriptSerializer和传球dictionary[]来解决,而不需要将问题anonymous类型
JavaScriptSerializer jSerializer = new JavaScriptSerializer();
var Foos = jSerializer.Deserialize<Dictionary<string, object>[]>(jsonString);
Run Code Online (Sandbox Code Playgroud) 我尝试定义一个协议,P2以便它返回一个带有另一个协议约束的泛型类P1,例如:
protocol P1 {}
class C<T : P1> {}
public protocol P2 {
typealias T
class func c() -> C<T>
}
Run Code Online (Sandbox Code Playgroud)
但是这会导致以下编译器错误:
error: type 'T' does not conform to protocol 'P1'
class func c() -> C<T>
Run Code Online (Sandbox Code Playgroud)
似乎没有任何组合可以允许这种情况,例如下一个明显的语法:
protocol P1 {}
class C<T : P1> {}
public protocol P2 {
typealias T
class func c() -> C<T : P1>
}
Run Code Online (Sandbox Code Playgroud)
错误:
error: expected '>' to complete generic argument list
class func c() -> C<T : P1>
^ …Run Code Online (Sandbox Code Playgroud) Microsoft.AspNetCore.App 共享框架中是否有所有程序集的官方列表?在 .csproj 中引用为:
<FrameworkReference Include="Microsoft.AspNetCore.App" />
Run Code Online (Sandbox Code Playgroud)
我所能找到的只是 2019 年 1 月的旧软件包列表,该列表不再存在于aspnetcore存储库中:
有没有官方的最新参考资料?
我想看一下ASP.NET的System.Web.UI.DataBinder.Eval()的快速版本是否存在?理想情况下编译为Func的东西我可以缓存并稍后调用,例如:
Func<object,string> expr = CompileDataBinder(typeof(Model), "model.PocoProperty.Name");
string propertyName = expr(model);
Run Code Online (Sandbox Code Playgroud)
有谁知道这样的野兽是否存在?
PS我没有使用ASP.NET,并希望它能在普通的C#中工作
我刚开始发现serviceStack ORMlite,我正在试图弄清楚如何进行批量插入.在任何地方都有这样的例子吗?
提前致谢
我正在尝试在我们为业务创建的服务中建立编码模式(一些规则).我们遵循apigree为设计RESTful服务而提出的基本指导.
我们希望采用的规则之一是阻止我们不想支持的某些路由和动词组合.据推测,我们会发回一个HttpStatusCode.NotSupported用于这些非法组合,也许是一个人类可读的消息?
我们希望支持的法律组合是:
GET /resource - lists all resources
GET /resource/{id} - retrieves specific resource by ID
POST /resource - adds a new resource
PUT /resource/{id} - updates specific resource by ID
DELETE /resource/{id} - deletes specific resource by ID
Run Code Online (Sandbox Code Playgroud)
我们明确不想支持一些非法组合.
POST /resource
PUT /resource
DELETE /resource
Run Code Online (Sandbox Code Playgroud)
我们为每个支持的路由都有验证器.但是我们在代码库中的任何地方都没有定义任何这些非法路由.
从测试中我们了解到,如果客户端发送一个GET /resource/{id}空白id(string.Empty)的请求,那么ServiceStack magic不会为该请求执行验证器(GET /resource/{id}),而是重定向到GET/resource.我们认为它DELETE /resource/{id}和PUT /resource/{id}.但是这些'默认'行为都不可取,我们宁愿返回一个HttpStatusCode.NotSupported或一些标头指向客户端到API文档(或一些这样的指导).
您能否建议一些选项来在框架中明确处理这些情况?
干杯
我在ServiceStack中注册了一个新的内容类型:
appHost.ContentTypeFilters.Register("application/x-my-content-type",
SerializeToStream, DeserializeFromStream);
Run Code Online (Sandbox Code Playgroud)
如果客户端在http流中发送内容类型,一切都按预期工作.
不幸的是,我有一个客户端不在我的HTTP Request Heads控制之下,并且不发送内容类型.
如何让ServiceStack设置该路由的默认内容类型?
如何定义一个指定T支持Int我的泛型约束中的下标的关系,以便这个函数编译?
func index<T,U>(x:T) -> U {
return x[0] //Invalid capability as expected
}
Run Code Online (Sandbox Code Playgroud)
我的第一个猜测是T[Int] == U我可以指定的地方可以使用和T索引进行索引,即:IntU
func index<T,U where T[Int] == U>(x:T) -> U {
return x[0]
}
Run Code Online (Sandbox Code Playgroud)
但这种语法不起作用.无论如何我可以将这种关系指定为通用约束或协议吗?
c# ×5
servicestack ×5
asp.net ×2
swift ×2
.net ×1
asp.net-core ×1
compilation ×1
eval ×1
expression ×1
generics ×1
json ×1
msbuild ×1
nuget ×1
protocols ×1
razor ×1
redis ×1
rest ×1
web-services ×1