我试图了解如何使用Angularjs.它看起来很漂亮的框架,但我坚持DI的一个小问题...
如何在模块的"run"方法中注入dependecies?我的意思是我能够做到这一点,但只有当我的服务/工厂/值与"运行"参数名称同名时才有效.我构建一个简单的应用程序来说明我的意思:
var CONFIGURATION = "Configuration"; //I would like to have App.Configuration
var LOG_SERVICE = "LogService"; //I would like to have App.Services.LogService
var LOGIN_CONTROLLER = "LoginController";
var App = {};
App.Services = {};
App.Controllers = {};
App = angular.extend(App, angular.module("App", [])
.run(function ($rootScope, $location, Configuration, LogService) {
//How to force LogService to be the logger in params?
//not var = logger = LogService :)
LogService.log("app run");
}));
//App.$inject = [CONFIGURATION, LOG_SERVICE]; /* NOT WORKS */
App.Services.LogService = function (config) { …Run Code Online (Sandbox Code Playgroud) 我试图理解为什么CORS正在以它的工作方式工作.
当我从了解到这个职位,当从网页www.a.com使得AJAX请求www.b.com,那么它的www.b.com是决定是否请求应该被允许.
但是在这种模型中客户端的确切安全性是什么?例如,如果黑客成功向我的页面注入XSS脚本,那么它会向其域发出一个AJAX请求来存储用户数据.因此,黑客的域名将允许这样的请求.
我认为www.a.com应决定允许请求的域名.因此理论上,在头文件Access-Control-Allow-Origin中,我想提出允许AJAX CORS请求的域的完整列表.
有人可以解释当前CORS实现处理的安全问题吗?
我有一个在ASP.NET MVC应用程序中使用的以下代码示例.此代码的目的是为排队一些长时间运行的操作创建"即发即弃"请求.
public JsonResult SomeAction() {
HttpContext ctx = HttpContext.Current;
Task.Run(() => {
HttpContext.Current = ctx;
//Other long running code here.
});
return Json("{ 'status': 'Work Queued' }");
}
Run Code Online (Sandbox Code Playgroud)
我知道这不是在异步代码中处理HttpContext.Current的好方法,但是目前我们的实现不允许我们做其他事情.我想了解这段代码有多危险......
问题:理论上可以在Task.Run中设置HttpContext,将上下文设置为另一个请求吗?
我想是的,但我不确定.我是如何理解的:Request1是从线程池中的Thread1处理的,然后当Thread1绝对处理另一个请求(Request2)时,Task.Run中的代码将设置从Request1到Request2的上下文.
也许我错了,但我对ASP.NET内部的了解不允许我正确地理解它.
谢谢!
检查是否StringBuilder以特定字符串结束的最佳(最短和最快)方法是什么?
如果我只想检查一个字符,这不是问题sb[sb.Length-1] == 'c',但如何检查它是否以更长的字符串结尾?
我可以考虑像循环"some string".Length和逐个读取字符之类的东西,但也许存在更简单的东西?:)
最后我想要像这样的扩展方法:
StringBuilder sb = new StringBuilder("Hello world");
bool hasString = sb.EndsWith("world");
Run Code Online (Sandbox Code Playgroud) 我做错了什么?
根据文件,我应该能够注入provider到module.config......但我得到一个错误- "未知供应商"
(function () {
"use strict";
angular.module("ab.core", [])
.provider("ab.core.provider", function () {
console.log("ab.core.provider - constructor");
this.$get = function () {
console.log("ab.core.provider - get");
return { value: "test" };
}
})
.config(["ab.core.provider", function (myProvider) { console.log("ab.core - config " + myProvider.value); }])
.run(function () { console.log("ab.core - run"); });
angular.module("ab", ["ab.core"])
.config(["ab.core.provider", function () { console.log("ab - config"); }])
.run(function () { console.log("ab - run"); });
angular.bootstrap(document, ['ab']);
}());
Run Code Online (Sandbox Code Playgroud)
其实我这里有三个问题...
1)如何注入模块的ab.core.provider配置ab.core …
我知道这个问题被问了很多次,我在谷歌上找到了很多关于这个问题的信息,但我仍然无法解决我的DEV PC上存在的问题:(
(无法加载文件或程序集Microsoft.SqlServer.BatchParser).我按照许多互联网资源的建议安装了Microsoft SQL Server 2005管理对象集合,但没有帮助.然后我尝试安装Microsoft SQL Server 2008管理对象,但它说它无法安装,因为已经存在更新的版本(我安装了SQL Server 2008).
然后我去了GAC,发现以下几行:
Microsoft.SqlServer.BatchParser,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91,processorArchitecture = AMD64
Microsoft.SqlServer.BatchParser,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91,processorArchitecture = AMD64
Microsoft.SqlServer.BatchParser,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91,processorArchitecture = x86
Microsoft.SqlServer.BatchParser,Version = 9.0.242.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91,processorArchitecture = x86
Microsoft.SqlServer.BatchParserClient,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = 89845dcd8080cc91,processorArchitecture = MSIL < - 版本9.0.242.0是否存在?
我已经花了大约半天的时间才找到一个没有成功的解决方案,当intellisense由于那个错误而无法工作时,使用VS非常糟糕.
我安装了VS 2010 SQL Express 2005和SQL Server 2008(参见配置屏幕截图)
请帮帮我解决这个问题!谢谢.
我有一个任务是编写一个可以接收不同类型的路径/ URL的对象,并返回它是什么类型的路径/ url.例如,路径可以是
1. [drive]:\Temp
2. \\Temp
3. Temp (assuming that it relative Temp),
4. /Temp
5. ~/Temp
6. file://[drive]:/Temp
7. file://Temp
8. [scheme]://something/Temp
Run Code Online (Sandbox Code Playgroud)
...等等.
如何检查C#物理路径,相对网址或绝对网址?
我认为相对容易知道它是相对的还是绝对的uri,但是如何知道它是否是UNC路径?
我试图使用Uri对象和它的IsUnc属性,但它并没有真正帮助我....对于c:\ temp它返回false,对于"/ temp","temp /"和"temp"它会抛出异常格式是不正确的.是否存在任何内置对象.NET 3.5可以帮助我,或者我可以使用什么算法来确定路径的类型?
我试着谷歌,但没有找到答案......
是否可以检查是否使用SCHEMABINDING创建了视图?
编辑:在Joel Coehoorns的优秀答案之后,我明白我需要更加具体,所以我修改了我的代码,使其更贴近我正在努力理解的事情......
事件:据我所知,在后台,事件是EventHandlers又名代表的"集合",将在事件引发时执行.所以对我来说,这意味着如果对象Y有事件E而对象X订阅事件YE,那么Y将引用X,因为Y必须执行位于X中的方法,这样就不能收集X,并且我理解的事情.
//Creates reference to this (b) in a.
a.EventHappened += new EventHandler(this.HandleEvent);
Run Code Online (Sandbox Code Playgroud)
但这不是Joel Coehoorn所说的......
但是,事件存在问题,有时人们喜欢将IDisposable与具有事件的类型一起使用.问题是当类型X订阅另一个类型Y中的事件时,X现在具有对Y的引用.该引用将阻止Y被收集.
我不明白X将如何引用Y ???
我修改了一些我的例子来说明我的情况更接近:
class Service //Let's say it's windows service that must be 24/7 online
{
A _a;
void Start()
{
CustomNotificationSystem.OnEventRaised += new EventHandler(CustomNotificationSystemHandler)
_a = new A();
B b1 = new B(_a);
B b2 = new B(_a);
C c1 = new C(_a);
C c2 = new C(_a); …Run Code Online (Sandbox Code Playgroud) 我试图从性能的角度理解两种解决方案中哪一种更受欢迎.例如,我有两段代码:
1)拳击/拆箱
int val = 5;
Session["key"] = val;
int val2 = (int)Session["key"];
Run Code Online (Sandbox Code Playgroud)
2)Casting(IntObj有int属性来存储int)
IntObj val = new IntObj(5);
Session["key"] = val;
int val2 = ((IntObj )Session["key"]).Value;
Run Code Online (Sandbox Code Playgroud)
这些例子之间的内存管理差异是什么?有没有更快的方法来执行此类操作?
注意: Session例如,它可以是任何Dictionary<string, object>
.net ×4
c# ×4
javascript ×3
angularjs ×2
sql-server ×2
ajax ×1
asp.net ×1
asp.net-mvc ×1
asynchronous ×1
cors ×1
cross-domain ×1
dispose ×1
events ×1
httpcontext ×1
path ×1
performance ×1
sql ×1
string ×1
t-sql ×1
threadpool ×1
unc ×1
uri ×1