我正在尝试在ASP.NET Core中创建自定义授权属性.在以前的版本中,可以覆盖bool AuthorizeCore(HttpContextBase httpContext)
.但这不再存在于AuthorizeAttribute
.
制作自定义AuthorizeAttribute的当前方法是什么?
我想要完成的任务:我在Header Authorization中收到一个会话ID.从该ID我将知道特定动作是否有效.
我希望一个类中的特定方法只能由特定类访问.例如:
public class A
{
public void LimitedAccess() {}
public void FullAccess() {}
}
public class B
{
public void Func()
{
A a = new A();
a.LimitedAccess(); // want to be able to call this only from class B
}
}
public class C
{
public void Func()
{
A a = new A();
a.FullAccess(); // want to be able to call this method
a.LimitedAccess(); // but want this to fail compile
}
}
Run Code Online (Sandbox Code Playgroud)
是否有可用于强制执行此操作的关键字或属性?
更新:
由于现有的系统复杂性和时间限制,我需要一个低影响力的解决方案.我想在编译时指出无法使用LimitedAccess().我相信Jon Skeet的答案正是我所要求的无法在C#中完成.
这个问题和乔恩的回答对那些可能会遇到这个问题的人有好处.事实上,这种设计气味可以让任何人选择这样的东西作为理想的解决方案. …
鉴于:
class BaseClass {}
class DerivedClass : BaseClass {}
Run Code Online (Sandbox Code Playgroud)
我想编写一个可以接受带有BaseClass参数的Action的函数.该函数将创建指定类型的对象并将其传递给Action.
void MyFunction(Type type, Action<BaseClass> DoAction)
{
BaseClass obj = (BaseClass)Activator.CreateInstance(type);
DoAction(obj);
}
Run Code Online (Sandbox Code Playgroud)
我想传入其参数为DerivedClass的AnotherFunction:
void AnotherFunction(DerivedClass x)
{
}
Run Code Online (Sandbox Code Playgroud)
我该怎么称呼MyFunction?由于AnotherFunction参数,以下内容无效:
MyFunction(typeof(DerivedClass), AnotherFunction);
Run Code Online (Sandbox Code Playgroud) 好吧,我正在尝试将一些值和字符串写入文本文件.
但是这个文本文件必须包含2个字节
这些是我在完成向其写入其他值后要插入到我的文本文件中的2个字节:
我试过这个方法,但我不知道如何通过它写字节
using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8))
Run Code Online (Sandbox Code Playgroud)
在把我想要的字符串放到它上面后,我不知道如何将它们写入文本文件.
我可以创建一个具有完全限定名称的新类Namespace.OuterClass.NestedClass
.但试图获得Type.GetType("Namespace.OuterClass.NestedClass")
返回类型null
.这是示例代码:
namespace Sample
{
public class Program
{
public class Animal { }
public class Vegetable { }
public class Mineral { }
static public void Test()
{
Object o = new Sample.Program.Vegetable();
Type t = Type.GetType("Sample.Program.Vegetable"); // returns null
Console.ReadKey();
}
static void Main(string[] args)
{
Program.Test();
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何Type.GetType
用于嵌套类?
我用DNVM升级了dnvm upgrade -Unstable
.运行dnvm list
显示此活动:1.0.0-beta6-12120.
我使用ASP.NET 5预览模板为网站创建了一个新项目,并验证它将构建.
我将project.json更改为引用beta6:
"dependencies": {
"EntityFramework.SqlServer": "7.0.0-beta6",
"EntityFramework.Commands": "7.0.0-beta6",
"Microsoft.AspNet.Mvc": "6.0.0-beta6",
"Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-beta6",
"Microsoft.AspNet.Authentication.Cookies": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Facebook": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Google": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.MicrosoftAccount": "1.0.0-beta6",
"Microsoft.AspNet.Authentication.Twitter": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics": "1.0.0-beta6",
"Microsoft.AspNet.Diagnostics.Entity": "7.0.0-beta6",
"Microsoft.AspNet.Identity.EntityFramework": "3.0.0-beta6",
"Microsoft.AspNet.Server.IIS": "1.0.0-beta6",
"Microsoft.AspNet.Server.WebListener": "1.0.0-beta6",
"Microsoft.AspNet.StaticFiles": "1.0.0-beta6",
"Microsoft.AspNet.Tooling.Razor": "1.0.0-beta6",
"Microsoft.Framework.Configuration.Json": "1.0.0-beta6",
"Microsoft.Framework.Configuration.UserSecrets": "1.0.0-beta6",
"Microsoft.Framework.CodeGenerators.Mvc": "1.0.0-beta6",
"Microsoft.Framework.Logging": "1.0.0-beta6",
"Microsoft.Framework.Logging.Console": "1.0.0-beta6"
}
Run Code Online (Sandbox Code Playgroud)
但是构建因运行时库冲突而失败:
1>MSBUILD : DNX 4.5.1 error CS0433: The type 'AssemblyFileVersionAttribute' exists in both 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' and 'System.Runtime, Version=4.0.20.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
1>MSBUILD : …
我试图在一个简单的类库中使用[Serializable]属性标记一个自定义异常类,该类目标是dnx451和dnxcore50,但遗憾的是我无法找到SerializableAttribute存在于哪个依赖项中.
您能否告诉我如何找到dnxcore50依赖项?
假设我有一个最基本的控制器
public class HomeController : Controller
{
public ActionResult Index(string id, string language)
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
其中包含2个参数.但是,有一个要求是调用action方法的客户端应该id
从URL 传递值,但是language
从http头传递值.这意味着url应该是/Home/Index/12345
,同时调用客户端将设置Http Header值language : en
.
如何在MVC5或MVC6中设置路由以达到要求?
请不要提供Web Api的样本.
谢谢
c# asp.net asp.net-mvc-routing asp.net-mvc-5 asp.net-core-mvc
我正在将一些应用程序从ASP.NET 5 beta7迁移到RC1.使用HTTPPlatformHandler我可以运行任何这些ASP.NET 5 RC1应用程序作为IIS站点的根目录.但它们不会作为网站的子目录(右键单击"添加应用程序")运行.完整的回复显示:
HTTP/1.1 404 Not Found
Content-Length: 0
Server: Kestrel
X-Powered-By: ASP.NET
Date: Tue, 24 Nov 2015 14:59:04 GMT
Run Code Online (Sandbox Code Playgroud)
这不是权限问题,因为当应用程序是站点的根目录并使用相同的应用程序池时,路由会成功提供.
应用程序池配置为"无托管代码"和集成管道.
root应用程序的web.config如下所示:
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
对于子应用程序,我必须删除httpplatformhandler处理程序以避免错误"无法添加类型为'add'的重复集合条目,并将唯一键属性'name'设置为'httpplatformhandler'".
现在我们必须使用kestrel/httpplatformhandler,是否可以在站点下作为应用程序运行?
鉴于类MyClass<T>
什么是正确的术语来描述什么MyClass
做与泛型类型参数?
器具?用途?这听起来不对.我已经浏览了关于泛型的MS文档,他们似乎在不使用术语的情况下谈论它.
在编写关于检查泛型类型参数类型的代码的注释时,我会想到这个问题,看它是否可以从特定的基类型中分配.我打算说:"检查泛型类是否动词指定类型".我可以用不同的方式说出来,但想知道是否有一个好的动词可供使用.
我有一个ArrayList ids
包含String
ID的对象,另一个ArrayList objs
包含具有字符串ID字段的对象.现在我有代码,找到ids
没有匹配的代码,objs
如下所示:
var missing = new List<string>();
foreach (MyObj obj in objs)
{
if (!ids.Contains(obj.ID))
{
missing.Add(obj.ID);
}
}
Run Code Online (Sandbox Code Playgroud)
这很好用.但是我把它重写为一个更好的"在LINQ中思考"的练习:
var missing = objs.Cast<MyObj>().Select(x => x.ID).Except(ids.Cast<string>());
Run Code Online (Sandbox Code Playgroud)
我期望这个LINQ比foreach
+ Contains
方法慢(特别是由于Cast
调用),但LINQ的运行速度要快得多.什么是LINQ方法,以不同的方式提供性能优势?