小编jlt*_*rem的帖子

如何在ASP.NET Core中创建自定义AuthorizeAttribute?

我正在尝试在ASP.NET Core中创建自定义授权属性.在以前的版本中,可以覆盖bool AuthorizeCore(HttpContextBase httpContext).但这不再存在于AuthorizeAttribute.

制作自定义AuthorizeAttribute的当前方法是什么?

我想要完成的任务:我在Header Authorization中收到一个会话ID.从该ID我将知道特定动作是否有效.

c# asp.net authorization asp.net-core-mvc asp.net-core

362
推荐指数
13
解决办法
19万
查看次数

limit方法只能由特定类调用

我希望一个类中的特定方法只能由特定类访问.例如:

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#中完成.

这个问题和乔恩的回答对那些可能会遇到这个问题的人有好处.事实上,这种设计气味可以让任何人选择这样的东西作为理想的解决方案. …

c#

22
推荐指数
2
解决办法
2万
查看次数

如何使用派生类作为Action参数传递Action <in T>?

鉴于:

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)

c#

7
推荐指数
1
解决办法
1411
查看次数

使用Stream writer将特定字节写入textfile

好吧,我正在尝试将一些值和字符串写入文本文件.
但是这个文本文件必须包含2个字节

这些是我在完成向其写入其他值后要插入到我的文本文件中的2个字节:

十六进制

我试过这个方法,但我不知道如何通过它写字节

using (StreamWriter sw = new StreamWriter(outputFilePath, false, Encoding.UTF8))
Run Code Online (Sandbox Code Playgroud)

在把我想要的字符串放到它上面后,我不知道如何将它们写入文本文件.

c# byte text stream

7
推荐指数
3
解决办法
3万
查看次数

如何使用Type.GetType(string)获取嵌套类的类型

我可以创建一个具有完全限定名称的新类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用于嵌套类?

c# syntax

6
推荐指数
1
解决办法
3707
查看次数

ASP.NET 5(vNext)Web项目:库冲突从beta4升级到beta6

我用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 : …

c# asp.net asp.net-core

6
推荐指数
1
解决办法
4155
查看次数

dnxcore50中的SerializableAttribute

我试图在一个简单的类库中使用[Serializable]属性标记一个自定义异常类,该类目标是dnx451和dnxcore50,但遗憾的是我无法找到SerializableAttribute存在于哪个依赖项中.

您能否告诉我如何找到dnxcore50依赖项?

asp.net dnx asp.net-core

6
推荐指数
1
解决办法
1498
查看次数

基于Http Header值的ASP.NET MVC5/6路由

假设我有一个最基本的控制器

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

4
推荐指数
1
解决办法
3230
查看次数

ASP.NET 5将应用程序添加为IIS应用程序

我正在将一些应用程序从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,是否可以在站点下作为应用程序运行?

iis-7.5 kestrel-http-server asp.net-core

4
推荐指数
1
解决办法
1540
查看次数

类使用泛型类型参数的术语

鉴于类MyClass<T>什么是正确的术语来描述什么MyClass 与泛型类型参数?

器具?用途?这听起来不对.我已经浏览了关于泛型的MS文档,他们似乎在不使用术语的情况下谈论它.

在编写关于检查泛型类型参数类型的代码的注释时,我会想到这个问题,看它是否可以从特定的基类型中分配.我打算说:"检查泛型类是否动词指定类型".我可以用不同的方式说出来,但想知道是否有一个好的动词可供使用.

.net c# generics

2
推荐指数
1
解决办法
124
查看次数

foreach vs LINQ找到集合之间的差异

我有一个ArrayList ids包含StringID的对象,另一个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)

我期望这个LINQforeach+ Contains方法(特别是由于Cast调用),但LINQ的运行速度要快得多.什么是LINQ方法,以不同的方式提供性能优势?

c# linq

1
推荐指数
1
解决办法
870
查看次数