小编tec*_*mad的帖子

在ASP.NET MVC中授权属性

我很难理解[Authorize]ASP.NET MVC 中属性的实际使用.根据概念,如果我们使用[Authorize]属性修饰控制器方法,则只允许经过身份验证的用户访问控制器.

我开发了一个ASP.NET MVC应用程序,没有用[Authorize]属性装饰控制器.我观察到的是,如果我使用web.config或其他方式在我的应用程序中正确实现身份验证机制,那么我现在可以访问{controller}/{action}/{id}特定操作方法的URL .

系统总是要求登录.这意味着我的控制器是安全的.我的问题是,当我可以在不使用[Authorize]属性的情况下保护我的控制器时,它的真正需求是什么?

asp.net-mvc-3

58
推荐指数
6
解决办法
10万
查看次数

使用Abstract类和接口进行多重继承

我在C#.NET中编写了以下代码

public interface IWork
{
    void func();

}
public abstract  class WorkClass
{
    public void func()
    {
        Console.WriteLine("Calling Abstract Class Function");
    }

}

public class MyClass:WorkClass,IWork
{

}
Run Code Online (Sandbox Code Playgroud)

在编译时,我没有收到任何错误.编译器并没有强迫我实现方法"func();" 在"MyClass"中,它来自接口"IWork".Latter,我可以优雅地创建类"MyClass"的实例并调用函数"func()".为什么编译器不强迫我在"MyClass"中实现"func()"方法(它来自"IWork"接口?这是C#中的一个缺陷吗?

c#

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

使用WCF REST在PUT和POST之间的区别

我试图实现REST WCF以探索PUT和POST动词之间的区别.我已使用该服务在某个位置上传了一个文件.

服务实现如下:

[OperationContract]
[WebInvoke(UriTemplate = "/UploadFile", Method = "POST")]
void UploadFile(Stream fileContents);

public void UploadFile(Stream fileContents)
{
 byte[] buffer = new byte[32768];
 MemoryStream ms = new MemoryStream();
 int bytesRead, totalBytesRead = 0;
 do
 {
       bytesRead = fileContents.Read(buffer, 0, buffer.Length);
       totalBytesRead += bytesRead;

       ms.Write(buffer, 0, bytesRead);
  } while (bytesRead > 0);

  using (FileStream fs = File.OpenWrite(@"C:\temp\test.txt")) 
  { 
      ms.WriteTo(fs); 
   }

  ms.Close();
Run Code Online (Sandbox Code Playgroud)

}

客户端代码如下:

HttpWebRequest request =     (HttpWebRequest)HttpWebRequest.Create("http://localhost:1922   /EMPRESTService.svc/UploadFile");
        request.Method = "POST";
        request.ContentType = "text/plain";

        byte[] fileToSend = File.ReadAllBytes(@"C:\TEMP\log.txt");  // txtFileName contains …
Run Code Online (Sandbox Code Playgroud)

c# wcf wcf-rest

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

泛型和抽象类

我已经实现了Generices如下:

  public class GenericAnimal<T> 
  {
    public int legs;
    public void Walk()
    {
        Console.WriteLine("Animals Walk....");
    }
}

public class Dog 
{
    public void Bark()
    {
        Console.WriteLine("Barking....");
    }
}

public class Cat 
{
    public void Mew()
    {
        Console.WriteLine("Mewing....");
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我使用该类如下:

        GenericAnimal<Dog> dogObj = new GenericAnimal<Dog>();
        GenericAnimal<Cat> catObj = new GenericAnimal<Cat>(); 
Run Code Online (Sandbox Code Playgroud)

在dogObj和catObj中,我都得到了"Walk"方法.我可以用抽象类做这件事.那么使用Generics而不是Abstract类有什么额外的好处呢?

c#

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

在"变量"中重新确定"K"

我写了一段代码如下:

var i=5;
i='K';
Run Code Online (Sandbox Code Playgroud)

编译代码没有错误.就我的概念而言,我无法在var中重新赋值.因为我已将整数5分配给i.i的类型是int.那么为什么它允许在i中分配一个char'K'?

c#

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

标签 统计

c# ×4

asp.net-mvc-3 ×1

wcf ×1

wcf-rest ×1