ASP.NET(C#)

一个生成不重复随机数的方法
//生成不重复随机数算法
private int GetRandomNum(int i,int length,int up,int down)
{
 int iFirst=0;
 Random ro=new Random(i*length*unchecked((int)DateTime.Now.Ticks)); 
 iFirst=ro.Next(up,down);
 return iFirst;

发表于 @ 2005年12月30日 3:44 PM | 评论 (0)

ASP.NET多文件上传方法
前台代码

<script language="Javascript">
function addFile() 

var str = '<INPUT type="file" size="30" NAME="File"><br>' 
document.getElementById('MyFile').insertAdjacentHTML("beforeEnd",str)


</script>

<form id="form1" method="post" runat="server" enctype="multipart/form-data">
<div align="center">
<h3>多文件上传</h3>
<P id="MyFile"><INPUT type="file" size="30" NAME="File"><br></P>
<P>
<input type="button" value="增加(Add)" onclick="addFile()"> <input onclick="this.form.reset()" type="button" value="重置(ReSet)">
<asp:Button Runat="server" Text="开始上传" ID="UploadButton">
</asp:Button>
</P>
<P>
<asp:Label id="strStatus" runat="server" Font-Names="宋体" Font-Bold="True" Font-Size="9pt" Width="500px"
BorderStyle="None" BorderColor="White"></asp:Label>
</P>
</div>
</form>

后台代码

protected System.Web.UI.WebControls.Button UploadButton;
protected System.Web.UI.WebControls.Label strStatus;

private void Page_Load(object sender, System.EventArgs e)
{
/// 在此处放置用户代码以初始化页面
if (this.IsPostBack) this.SaveImages();
}

private Boolean SaveImages()
{
///'遍历File表单元素
HttpFileCollection files = HttpContext.Current.Request.Files;

/// '状态信息
System.Text.StringBuilder strMsg = new System.Text.StringBuilder();
strMsg.Append("上传的文件分别是:<hr color=red>");
try
{
 for(int iFile = 0; iFile < files.Count; iFile++)
 {
  ///'检查文件扩展名字
  HttpPostedFile postedFile = files[iFile];
  string fileName,fileExtension,file_id;

//取出精确到毫秒的时间做文件的名称
  int year = System.DateTime.Now.Year;
  int month = System.DateTime.Now.Month;
  int day = System.DateTime.Now.Day;
  int hour = System.DateTime.Now.Hour;
  int minute = System.DateTime.Now.Minute;
  int second = System.DateTime.Now.Second;
  int millisecond = System.DateTime.Now.Millisecond;
  string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString()+iFile.ToString();

fileName = System.IO.Path.GetFileName(postedFile.FileName);
  fileExtension = System.IO.Path.GetExtension(fileName);
  file_id = my_file_id+fileExtension;
  if (fileName != "")
  {
   fileExtension = System.IO.Path.GetExtension(fileName);
   strMsg.Append("上传的文件类型:" + postedFile.ContentType.ToString() + "<br>");
   strMsg.Append("客户端文件地址:" + postedFile.FileName + "<br>");
   strMsg.Append("上传文件的文件名:" + file_id + "<br>");
   strMsg.Append("上传文件的扩展名:" + fileExtension + "<br><hr>");
   postedFile.SaveAs(System.Web.HttpContext.Current.Request.MapPath("images/") + file_id);
  }
 }
 strStatus.Text = strMsg.ToString();
 return true;
}
catch(System.Exception Ex)
{
 strStatus.Text = Ex.Message;
 return false;
}
}

发表于 @ 2005年12月30日 3:37 PM | 评论 (0)

邮件系统使用的上传附件方法
前台HTML代码

<form id="mail" method="post" runat="server">
<table border="0" cellpadding="0" cellspacing="0" style="BORDER-COLLAPSE: collapse" bordercolor="#111111"
width="39%" id="AutoNumber1" height="75">
<tr>
<td width="100%" height="37"><INPUT id="myFile" style="WIDTH: 297px; HEIGHT: 22px" type="file" size="30" name="myFile"
runat="server"> 
<asp:button id="Upload" runat="server" Text="上传附件"></asp:button></td>
</tr>
<tr>
<td width="100%" height="38">
共计
<asp:textbox id="P_size" runat="server" Width="65px"></asp:textbox>KB    
 
<asp:dropdownlist id="dlistBound" runat="server"></asp:dropdownlist>  
<asp:button id="btnDel" runat="server" Text="删除附件"></asp:button></td>
</tr>
</table>
</form>

后台CS代码

public class Upload_Mail : System.Web.UI.Page
    {
        protected System.Web.UI.WebControls.Button Upload;
        protected System.Web.UI.WebControls.DropDownList dlistBound;
        protected System.Web.UI.WebControls.TextBox P_size;
        protected System.Web.UI.WebControls.Button btnDel;
        protected System.Web.UI.HtmlControls.HtmlInputFile myFile;

private void Page_Load(object sender, System.EventArgs e)
        {

if (!IsPostBack) 
            {
                //没有附件的状态
                dlistBound.Items.Clear();
                ArrayList arr = new ArrayList();
                arr.Add("--没有附件--");
                dlistBound.DataSource = arr ;
                dlistBound.DataBind();
                P_size.Text = "0";
            }
        }

private void Upload_Click(object sender, System.EventArgs e)
        {
            if(myFile.PostedFile !=null)
            {
                HttpFileCollection files  = HttpContext.Current.Request.Files;
                HttpPostedFile postedFile = files[0];
                string fileName = System.IO.Path.GetFileName(postedFile.FileName);
                string path = Request.PhysicalApplicationPath+@"UploadMail\"+ fileName;
                postedFile.SaveAs(path);

//数组对上存附件进行实时绑定
                if((string)Session["udMail"]==null)
                {
                    Session["udMail"] = fileName;
                }
                else
                {
                    Session["udMail"] = (string)Session["udMail"]+"|"+fileName;
                }

string[] udMail = Session["udMail"].ToString().Split('|');
                ArrayList list = new ArrayList(udMail);
                list.Reverse();
                udMail=(string[])list.ToArray(typeof(string));
                dlistBound.Items.Clear();
                long dirsize=0;
                for(int i = 0;i<udMail.Length;i++)
                {
                    string  IndexItem =  udMail[i];
                    string  VauleItem = Request.PhysicalApplicationPath+@"UploadMail\"+udMail[i];
                    dlistBound.Items.Add(new ListItem(IndexItem,VauleItem));
                    System.IO.FileInfo mysize = new System.IO.FileInfo(@VauleItem);
                    dirsize += System.Convert.ToInt32(mysize.Length/1024)+1;
                }
                P_size.Text = dirsize.ToString();

}
        }

private void btnDel_Click(object sender, System.EventArgs e)
        {
            string trueDelfile = dlistBound.SelectedValue.ToString();
            string Delfile = dlistBound.SelectedItem.ToString();
            usageIO.DeletePath(trueDelfile);

if(Session["udMail"] != null)
            {
                int index = Session["udMail"].ToString().IndexOf("|");
                if(index == -1)
                {
                    Session["udMail"] = null;
                    dlistBound.Items.Clear();
                    dlistBound.Items.Add("--没有附件--");
                    P_size.Text = "0";
                }
                else
                {

string[] udMail = Session["udMail"].ToString().Split('|');
                    ArrayList values = new ArrayList(udMail);
                    values.Remove(Delfile);
                    string s = null;
                    for(int i=0;i<values.Count;i++)
                    {
                        if(values.Count!=0)
                        {
                            s += values[i].ToString()+"|";
                        }
                    }
                    if(s!=""||s!=null)
                    {
                        s =  s.TrimEnd('|');
                    }
                    Session["udMail"] = s;

string[] uMail = Session["udMail"].ToString().Split('|');
                    ArrayList list = new ArrayList(uMail);
                    list.Reverse();
                    uMail=(string[])list.ToArray(typeof(string));
                    dlistBound.Items.Clear();
                    long dirsize=0;
                    for(int i = 0;i<uMail.Length;i++)
                    {
                        string  IndexItem =  uMail[i];
                        string  VauleItem = Request.PhysicalApplicationPath+@"UploadMail\"+uMail[i];
                        dlistBound.Items.Add(new ListItem(IndexItem,VauleItem));

System.IO.FileInfo mysize = new System.IO.FileInfo(@VauleItem);
                        dirsize += System.Convert.ToInt32(mysize.Length/1024)+1;
                    }
                    P_size.Text = dirsize.ToString();
                }
            }

}

Web 窗体设计器生成的代码#region Web 窗体设计器生成的代码
        override protected void OnInit(EventArgs e)
        {
            //
            // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
            //
            InitializeComponent();
            base.OnInit(e);
        }

/**//// <summary>
        /// 设计器支持所需的方法 - 不要使用代码编辑器修改
        /// 此方法的内容。
        /// </summary>
        private void InitializeComponent()
        {    
            this.Upload.Click += new System.EventHandler(this.Upload_Click);
            this.btnDel.Click += new System.EventHandler(this.btnDel_Click);
            this.Load += new System.EventHandler(this.Page_Load);

}
        #endregion
    }

发表于 @ 2005年12月30日 3:29 PM | 评论 (0)

上传图片并且生成可以控制大小图片清晰度的方法
      private void Upload_Click(object sender, System.EventArgs e)
        {
            if(myFile.PostedFile !=null)
            {
                // 检查文件扩展名字
                HttpFileCollection files  = HttpContext.Current.Request.Files;
                HttpPostedFile postedFile = files[0];
                string fileName,fileExtension,file_id,file_path;

//取出精确到毫秒的时间做文件的名称
                int year = System.DateTime.Now.Year;
                int month = System.DateTime.Now.Month;
                int day = System.DateTime.Now.Day;
                int hour = System.DateTime.Now.Hour;
                int minute = System.DateTime.Now.Minute;
                int second = System.DateTime.Now.Second;
                int millisecond = System.DateTime.Now.Millisecond;
                string my_file_id = year.ToString() + month.ToString() + day.ToString() + hour.ToString() + minute.ToString() + second.ToString() + millisecond.ToString();

//获得文件类型
                fileName = System.IO.Path.GetFileName(postedFile.FileName);
                fileExtension = System.IO.Path.GetExtension(fileName);

//重新命名文件,防止重复
                file_id = "topnews_"+my_file_id+fileExtension;
                file_path = "images/article_images/"+file_id;

//文件上传到服务器的根目录
                postedFile.SaveAs(Request.PhysicalApplicationPath+@"images\article_images\"+ file_id);

//处理图片大小
                int width,height,level;
                width=120;
                height=90;
                level=100;//从1-100
                GetThumbnailImage(width,height,level,file_id);
            }
        }

//生成缩略图函数
        public void GetThumbnailImage(int width,int height,int level,string file_id)
        {
            string newfile= Request.PhysicalApplicationPath+"images/article_images/"+"top_"+ file_id;
            System.Drawing.Image oldimage = System.Drawing.Image.FromFile(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
            System.Drawing.Image thumbnailImage = oldimage.GetThumbnailImage(width, height,new System.Drawing.Image.GetThumbnailImageAbort(ThumbnailCallback), IntPtr.Zero);
            Bitmap output=new Bitmap(thumbnailImage);

//处理JPG质量的函数
            ImageCodecInfo[] codecs=ImageCodecInfo.GetImageEncoders(); 
            ImageCodecInfo ici=null;
            foreach(ImageCodecInfo codec in codecs){if(codec.MimeType=="image/jpeg")ici=codec;}
            EncoderParameters ep=new EncoderParameters();
            ep.Param[0]=new EncoderParameter(Encoder.Quality,(long)level);
            output.Save(newfile,ici,ep);

//释放所有使用对象
            ep.Dispose();
            output.Dispose();
            oldimage.Dispose();
            thumbnailImage.Dispose();

//删除源图片
            string file_path = "images/article_images/"+"top_"+file_id;
            usageIO.DeletePath(Request.PhysicalApplicationPath+"images/article_images/"+ file_id);
            Response.Write("<script >parent.Form1.A_Simg.value ='"+file_path+"';location.replace('Upload_Img.aspx')</script>");
        }

bool ThumbnailCallback()
        {
            return false;
        }

发表于 @ 2005年12月30日 3:25 PM | 评论 (0)

生成高清晰度的缩略图[方法1]
public void pic_zero(string sourcepath,string aimpath,int scale)
{
string originalFilename =sourcepath;
//生成的高质量图片名称
string strGoodFile =aimpath;

//从文件取得图片对象
System.Drawing.Image image = System.Drawing.Image.FromFile(originalFilename);
int iImgWidth = image.Width;
int iImgHeight = image.Height;
int iScale = (iImgWidth / scale)>(iImgHeight/scale) ? (iImgWidth / scale) : (iImgHeight / scale);

//取得图片大小
System.Drawing.Size size = new Size(image.Width / iScale , image.Height / iScale);
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(size.Width,size.Height);
//新建一个画板
System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空一下画布
g.Clear(Color.Blue);
//在指定位置画图
g.DrawImage(image, new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), 
new System.Drawing.Rectangle(0, 0, image.Width,image.Height),
System.Drawing.GraphicsUnit.Pixel);
//保存高清晰度的缩略图
bitmap.Save(strGoodFile, System.Drawing.Imaging.ImageFormat.Jpeg);
g.Dispose();
}

发表于 @ 2005年12月30日 3:23 PM | 评论 (0)

比较完美的图片验证码
需要引用的名字空间

using System.IO;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

public class ValidationCodeImg : System.Web.UI.Page
    {
        private void Page_Load(object sender, System.EventArgs e)
        {
            this.CreateCheckCodeImage(GenerateCheckCode());
        }

private string GenerateCheckCode()
        {
            int number;
            char code;
            string checkCode = String.Empty;

System.Random random = new Random();

for(int i=0; i<5; i++)
            {
                number = random.Next();

if(number % 2 == 0)
                    code = (char)('0' + (char)(number % 10));
                else
                    code = (char)('0' + (char)(number % 10));

checkCode += code.ToString();
            }

Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));

return checkCode;
        }

private void CreateCheckCodeImage(string checkCode)
        {
            if(checkCode == null || checkCode.Trim() == String.Empty)
                return;

System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 24);
            Graphics g = Graphics.FromImage(image);

try
            {
                //生成随机生成器
                Random random = new Random();

//清空图片背景色
                g.Clear(Color.White);

//画图片的背景噪音线
                for(int i=0; i<2; i++)
                {
                    int x1 = random.Next(image.Width);
                    int x2 = random.Next(image.Width);
                    int y1 = random.Next(image.Height);
                    int y2 = random.Next(image.Height);

g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
                }

Font font = new System.Drawing.Font("Tahoma", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Black, Color.Black, 1.2f, true);
                g.DrawString(checkCode, font, brush, 2, 2);

//画图片的前景噪音点
                for(int i=0; i<100; i++)
                {
                    int x = random.Next(image.Width);
                    int y = random.Next(image.Height);

image.SetPixel(x, y, Color.FromArgb(random.Next()));
                }

//画图片的边框线
                g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);

System.IO.MemoryStream ms = new System.IO.MemoryStream();
                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                Response.ClearContent();
                Response.ContentType = "image/Gif";
                Response.BinaryWrite(ms.ToArray());
            }
            finally
            {
                g.Dispose();
                image.Dispose();
            }
        }

发表于 @ 2005年12月30日 3:09 PM | 评论 (0)

IE订单的打印处理办法
在一个商城项目应用中我需要把客户在网上下的订单使用IE打印出来

首先必须控制订单不能出现IE的页眉页脚(需要使用ScriptX)

<OBJECT id="factory" style="DISPLAY: none" codeBase="http://www.meadroid.com/scriptx/ScriptX.cab#Version=5,60,0,360"
    classid="clsid:1663ed61-23eb-11d2-b92f-008048fdd814" viewastext>
</OBJECT>
<SCRIPT defer>
function println() {
  factory.printing.header = ""
  factory.printing.footer = ""
  factory.printing.Print(true)
  factory.printing.leftMargin = 0.2
  factory.printing.topMargin = 0.5
  factory.printing.rightMargin = 0.2
  factory.printing.bottomMargin = 1.5
  window.print();
  }
</SCRIPT>
然后主要是控制订单数据输出用什么办法显示出来,为了灵活的控制输出效果,我这里使用的是循环读入数据(定购的商品)的办法(下面的代码是我使用的)

public string myOrder(string B_No)
        {
            doData.conn.Open();
            string strFirstMenu =null;
            string    strSql = "select Items_Type,Items_Name,Items_Unit,Items_Count,Items_Price from [OrderItems] where Order_No = '"+B_No+"'  order by ID desc";
            SqlDataAdapter da = new SqlDataAdapter(strSql,doData.conn);
            DataSet ds = new DataSet();
            da.Fill(ds,"myOrder");
            int count = ds.Tables[0].Rows.Count;
            string Items_Type,Items_Name,Items_Price,Items_Count,Items_Unit,Items_TotalPrice;
            Double Items_AllTotalPrice = 0;
            int Items_TotalCount = 0;

string begin = "<table id =\"inc\"style=\"BORDER-COLLAPSE: collapse\" borderColor=\"#111111\" height=\"35\" cellSpacing=\"0\" cellPadding=\"0\" width=\"95%\" border=\"1\"><tr><td align=\"center\" width=\"14%\" height=\"35\">商品编号</td><td align=\"center\" width=\"25%\" height=\"35\">商品名称</td><td align=\"center\" width=\"10%\" height=\"35\">单位</td><td align=\"center\" width=\"10%\" height=\"35\">数量</td><td align=\"center\" width=\"20%\" height=\"35\">单价(元)</td><td align=\"center\" width=\"21%\" height=\"35\">金额(元)</td></tr>";

for(int rb = 0; rb < count;rb++)
            {
                Items_Type = ds.Tables[0].Rows[rb][0].ToString();
                Items_Name = ds.Tables[0].Rows[rb][1].ToString();
                Items_Unit = ds.Tables[0].Rows[rb][2].ToString();
                Items_Count = ds.Tables[0].Rows[rb][3].ToString();
                Items_Price = Double.Parse(ds.Tables[0].Rows[rb][4].ToString()).ToString("0.00");
                Items_TotalPrice = (Double.Parse(Items_Price)*Double.Parse(Items_Count)).ToString("0.00");

Items_AllTotalPrice += Double.Parse(Items_TotalPrice);
                Items_TotalCount += Int32.Parse(Items_Count);

strFirstMenu += "<tr><td width=\"14%\" height=\"20\"> "+Items_Type+"</td><td width=\"25%\" height=\"20\">"+Items_Name+"</td><td width=\"10%\" height=\"20\">"+Items_Unit+"</td><td width=\"10%\" height=\"20\">"+Items_Count+"</td><td width=\"20%\" height=\"20\">"+Items_Price+"</td><td width=\"21%\" height=\"20\">"+Items_TotalPrice+"</td></tr>";
            }

string FirstMenu = begin+strFirstMenu+"</table>";

doData.conn.Close();
            return FirstMenu;
        }

发表于 @ 2005年12月30日 3:06 PM | 评论 (0)

URL传输参数加密解密
最近做一个论坛入口时要实现帐号和密码不在IE地址栏出现而做的

index.aspx.cs (加密处理)

Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};
Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
public string Encrypt(string strText)
{
 try
 {
  DESCryptoServiceProvider des = new DESCryptoServiceProvider();
  Byte[] inputByteArray  = Encoding.UTF8.GetBytes(strText);
  MemoryStream ms = new MemoryStream();
  CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(byKey64, Iv64), CryptoStreamMode.Write);
  cs.Write(inputByteArray, 0, inputByteArray.Length);
  cs.FlushFinalBlock();
  return Convert.ToBase64String(ms.ToArray());
 }
 catch(Exception ex)
 {
  return ex.Message;
 }
}

private void btnLogin_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
 DateTime nowTime = DateTime.Now;
 string postUser = txtUser.Text.ToString();
 string postPass = txtPassword.Text.ToString();
 Response.Redirect("Login.aspx?clubID="+Encrypt(postUser+","+postPass+","+nowTime.ToString()));
}

login.aspx.cs (解密处理)

//随机选8个字节既为密钥也为初始向量

Byte[] byKey64={10, 20, 30, 40, 50, 60, 70, 80};
Byte[] Iv64={11, 22, 33, 44, 55, 66, 77, 85};

public string Decrypt(string strText)
{
Byte[] inputByteArray = new byte[strText.Length];
try
{
 DESCryptoServiceProvider des = new DESCryptoServiceProvider();
 inputByteArray = Convert.FromBase64String(strText);
 MemoryStream  ms = new MemoryStream();
 CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(byKey64, Iv64), CryptoStreamMode.Write);
 cs.Write(inputByteArray, 0, inputByteArray.Length);
 cs.FlushFinalBlock();
 System.Text.Encoding encoding = System.Text.Encoding.UTF8;
 return encoding.GetString(ms.ToArray());
}
catch(Exception ex)
{
 return ex.Message;
}
}

private void Page_Load(object sender, System.EventArgs e)
{
 if(Request.Params["clubID"]!=null)
 {
  string originalValue = Request.Params["clubID"];
  originalValue = originalValue.Replace(" ","+");
  //+号通过url传递变成了空格。
  string decryptResult = Decrypt(originalValue);
  //DecryptString(string)解密字符串
  string delimStr = ",";
  char[] delimiterArray = delimStr.ToCharArray();
  string [] userInfoArray = null;
  userInfoArray = decryptResult.Split(delimiterArray);
  string userName = userInfoArray[0];

User userToLogin = new User();
  userToLogin.Username = userInfoArray[0];
  userToLogin.Password = userInfoArray[1];
  ......
 }
}

(0)

相关推荐

  • 详解ASP.NET Core 2.0 路由引擎之网址生成(译)

    问题 如何在ASP.NET Core 2.0中由路由引擎来生成网址? 答案 新建一个空项目,修改Startup.cs文件,添加MVC服务和中间件: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopmen

  • 详解ASP.NET Core 2.0 视图引擎(译)

    问题 如何在ASP.NET Core 2.0中使用Razor引擎来创建视图? 答案 新建一个空项目,修改Startup.cs,添加MVC服务和请求中间件: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelo

  • 浅谈ASP.NET Core中间件实现分布式 Session

    1.1. 中间件原理 1.1.1. 什么是中间件 中间件是段代码用于处理请求和响应,通常多个中间件链接起来形成管道,由每个中间件自己来决定是否要调用下一个中间件. 1.1.2. 中间件执行过程 举一个示例来演示中间件的执行过程(分别有三个中间件:日志记录.权限验证和路由):当请求进入应用程序时,执行执行日志记录的中间件,它记录请求属性并调用链中的下一个中间件权限验证,如果权限验证通过则将控制权传递给下一个中间件,不通过则设置401 HTTP代码并返回响应,响应传递给日志中间件进行返回. 1.1.

  • [译]ASP.NET Core 2.0 路由引擎详解

    本文介绍了ASP.NET Core 2.0 路由引擎详解,分享给大家,具体如下: 问题 ASP.NET Core 2.0的路由引擎是如何工作的? 答案 创建一个空项目,为Startup类添加MVC服务和请求中间件: public void ConfigureServices(IServiceCollection services) { services.AddMvc(); } public void Configure(IApplicationBuilder app, IHostingEnvir

  • ASP.NET Core中使用xUnit进行单元测试

    单元测试的功能自从MVC的第一个版本诞生的时候,就是作为一个重要的卖点来介绍的,通常在拿MVC与webform比较的时候,单元测试就是必杀底牌,把webform碾压得一无是处. 单元测试的重要性不用多说了,有单元测试的做兜底的项目,好比给开发人员买了份保险,当然这个保险的质量取决于单元测试的质量,那些一路Mock的单元测试,看起来很美,但是什么都cover不到.目前工作中的一个老项目,有2万多个单元测试用例,其中不少是用心之作,真正落实到了业务逻辑,开发人员可以放心的去修改代码,当然一切都必须按

  • ASP.NET Core 2.0 本地文件操作问题及解决方案

    问题 如何在ASP.NET Core 2.0中受限地访问本地目录和文件信息? 答案 新建一个空项目,修改Startup类,添加访问本地文件所需的服务: public void ConfigureServices(IServiceCollection services) { services.AddSingleton<IFileProvider>( new PhysicalFileProvider(Directory.GetCurrentDirectory())); } 创建一个中间件,读取根目

  • [译]ASP.NET Core 2.0 网址重定向的方法

    问题 如何在ASP.NET Core 2.0中实现网址重定向? 答案 新建一个空项目,在Startup.cs文件中,配置RewriteOptions参数并添加网址重定向中间件(UseRewriter): public void Configure(IApplicationBuilder app, IHostingEnvironment env) { var rewrite = new RewriteOptions() .AddRedirect("films", "movies

  • Asp.net MVC scheduler的实现方法详解

    Asp.net MVC scheduler的实现方法详解 本例使用了fullcalendar js : https://fullcalendar.io/ 1. view : @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } @section PageContent{ <style> .modal-backdrop { z-index: 9; } </sty

  • Asp.net mvc验证用户登录之Forms实现详解

    这里我们采用asp.net mvc 自带的AuthorizeAttribute过滤器验证用户的身份,也可以使用自定义过滤器,步骤都是一样. 第一步:创建asp.net mvc项目, 在项目的App_Start文件夹下面有一个FilterConfig.cs,在这个文件中可以注册全局的过滤器.我们在文件中添加AuthorizeAttribute过滤器如下: public class FilterConfig { public static void RegisterGlobalFilters(Glo

  • 详解ASP.NET Core 中的框架级依赖注入

    1.ASP.NET Core 中的依赖注入 此示例展示了框架级依赖注入如何在 ASP.NET Core 中工作. 其简单但功能强大,足以完成大部分的依赖注入工作.框架级依赖注入支持以下 scope: Singleton - 总是返回相同的实例 Transient - 每次都返回新的实例 Scoped - 在当前(request)范围内返回相同的实例 假设我们有两个要通过依赖注入来进行工作的工件: PageContext - 自定义请求上下文 Settings - 全局应用程序设置 这两个都是非常

随机推荐