亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

常見.NET功能代碼匯總

2019-11-14 15:56:16
字體:
來源:轉載
供稿:網友

1,在Web上修改指定文件位置的Web.config

這里需要使用 WebConfigurationManager 類,但必須使用WebConfigurationFileMap類來指定文件位置,看代碼:

long appId = 123; //修改網站的配置文件 var configFile = new FileInfo(configFilePath); var vdm = new VirtualDirectoryMapping(configFile.DirectoryName, true, configFile.Name); var wcfm = new WebConfigurationFileMap(); wcfm.VirtualDirectories.Add("/", vdm); var config = WebConfigurationManager.OpenMappedWebConfiguration(wcfm, "/", siteName); AppSettingsSection appSection = (AppSettingsSection)config.GetSection("appSettings"); appSection.Settings["abc"].Value = "system tag"; appSection.Settings["appId"].Value = appId.ToString(); config.Save();

 上面的代碼參考自 stackoverflow ,但是OpenMappedWebConfiguration 必須指定第3個參數,否則會報錯。不過,siteName 并不要求與IIS的站點名字對應,隨意寫一個也可以。

 2,使用angularJS 綁定站點信息

首先定義一個 webSiteListApp HTML代碼片斷:

<div ng-app="webSiteListApp" class="container">    <div ng-controller="webSiteListController">        <ul>            <li ng-repeat="item in siteList">                站點名:{{item.SiteName}} ------綁定信息:{{item.DomainPort}}            </li>        </ul>    </div></div>

然后定義module和service:

<script type="text/javascript">    // 參考 http://www.infragistics.com/community/blogs/dhananjay_kumar/archive/2015/05/13/how-to-use-angularjs-in-asp.net-mvc-and-entity-framework-4.aspx    var webSiteListApp = angular.module("webSiteListApp", []);    webSiteListApp.controller("webSiteListController", function ($scope, webSiteService) {        getSiteList();        function getSiteList() {            var list = webSiteService.getSiteList()            .success(function (sites) {                $scope.siteList = sites;                console.log($scope.siteList);            })            .error(function (error) {                $scope.status = 'Unable to load customer data: ' + error.message;                console.log($scope.status);            });                  }    });    webSiteListApp.factory("webSiteService", ["$http", function ($http) {        var webSiteService = {};        webSiteService.getSiteList = function () {            return $http.get("/SiteManage/GetServerBindings");        }        return webSiteService;    }]);</script>


這里定義了一個叫做 webSiteListApp 的module,然后注冊一個 webSiteListController 的控制器,該控制器在前面的HTMl代碼中定義,最后創建一個 webSiteService ,它監聽后來MVC來的數據,該數據對應的ASP.NET MVC 方法如下:

        public JsonResult GetServerBindings()        {            var siteList = IISControlHelper.IISWorker.GetServerBindings();            return Json(siteList, JsonRequestBehavior.AllowGet);        }

3,IIS管理程序

可以創建,刪除網站,添加應用程序池,代碼如下:

using System;using System.Collections;using System.Collections.Generic;using System.DirectoryServices;using System.Linq;using System.Net;using System.Text;using System.Threading.Tasks;namespace IISControlHelper{    /// <summary>    /// IIS 操作方法集合    /// http://blog.csdn.net/ts1030746080/article/details/8741399 錯誤    /// </summary>    public class IISWorker    {        PRivate static string HostName = "localhost";        /// <summary>        /// 獲取本地IIS版本        /// </summary>        /// <returns></returns>        public static string GetIIsVersion()        {            try            {                DirectoryEntry entry = new DirectoryEntry("IIS://" + HostName + "/W3SVC/INFO");                string version = entry.Properties["MajorIISVersionNumber"].Value.ToString();                return version;            }            catch (Exception se)            {                //說明一點:IIS5.0中沒有(int)entry.Properties["MajorIISVersionNumber"].Value;屬性,將拋出異常 證明版本為 5.0                return string.Empty;            }        }        /// <summary>        /// 創建虛擬目錄網站        /// </summary>        /// <param name="webSiteName">網站名稱</param>        /// <param name="physicalPath">物理路徑</param>        /// <param name="domainPort">站點+端口,如192.168.1.23:90</param>        /// <param name="isCreateAppPool">是否創建新的應用程序池</param>        /// <returns></returns>        public static int CreateWebSite(string webSiteName, string physicalPath, string domainPort,bool isCreateAppPool)        {            DirectoryEntry root = new DirectoryEntry("IIS://" + HostName + "/W3SVC");            // 為新WEB站點查找一個未使用的ID            int siteID = 1;            foreach (DirectoryEntry e in root.Children)            {                if (e.SchemaClassName == "IIsWebServer")                {                    int ID = Convert.ToInt32(e.Name);                    if (ID >= siteID) { siteID = ID + 1; }                }            }            // 創建WEB站點            DirectoryEntry site = (DirectoryEntry)root.Invoke("Create", "IIsWebServer", siteID);            site.Invoke("Put", "ServerComment", webSiteName);            site.Invoke("Put", "KeyType", "IIsWebServer");            site.Invoke("Put", "ServerBindings", domainPort );            site.Invoke("Put", "ServerState", 2);            site.Invoke("Put", "FrontPageWeb", 1);            site.Invoke("Put", "DefaultDoc", "Default.html");            // site.Invoke("Put", "SecureBindings", ":443:");            site.Invoke("Put", "ServerAutoStart", 1);            site.Invoke("Put", "ServerSize", 1);            site.Invoke("SetInfo");            // 創建應用程序虛擬目錄            DirectoryEntry siteVDir = site.Children.Add("Root", "IISWebVirtualDir");            siteVDir.Properties["AppIsolated"][0] = 2;            siteVDir.Properties["Path"][0] = physicalPath;            siteVDir.Properties["accessFlags"][0] = 513;            siteVDir.Properties["FrontPageWeb"][0] = 1;            siteVDir.Properties["AppRoot"][0] = "LM/W3SVC/" + siteID + "/Root";            siteVDir.Properties["AppFriendlyName"][0] = "Root";            if (isCreateAppPool)            {                DirectoryEntry apppools = new DirectoryEntry("IIS://" + HostName + "/W3SVC/AppPools");                DirectoryEntry newpool = apppools.Children.Add(webSiteName, "IIsapplicationPool");                newpool.Properties["AppPoolIdentityType"][0] = "4"; //4                newpool.Properties["ManagedPipelineMode"][0] = "0"; //0:集成模式 1:經典模式                newpool.Properties["ManagedRuntimeVersion"][0] = "v4.0";                newpool.CommitChanges();                siteVDir.Properties["AppPoolId"][0] = webSiteName;            }            siteVDir.CommitChanges();            site.CommitChanges();            return siteID;        }        /// <summary>        /// 得到網站的物理路徑        /// </summary>        /// <param name="rootEntry">網站節點</param>        /// <returns></returns>        public static string GetWebsitePhysicalPath(DirectoryEntry rootEntry)        {            string physicalPath = "";            foreach (DirectoryEntry childEntry in rootEntry.Children)            {                if ((childEntry.SchemaClassName == "IIsWebVirtualDir") && (childEntry.Name.ToLower() == "root"))                {                    if (childEntry.Properties["Path"].Value != null)                    {                        physicalPath = childEntry.Properties["Path"].Value.ToString();                    }                    else                    {                        physicalPath = "";                    }                }            }            return physicalPath;        }        /// <summary>        /// 獲取站點名        /// </summary>        public static List<IISInfo> GetServerBindings()        {            List<IISInfo> iisList = new List<IISInfo>();            string entPath = String.Format("IIS://{0}/w3svc", HostName);            DirectoryEntry ent = new DirectoryEntry(entPath);                    foreach (DirectoryEntry child in ent.Children)            {                if (child.SchemaClassName.Equals("IIsWebServer", StringComparison.OrdinalIgnoreCase))                {                    if (child.Properties["ServerBindings"].Value != null)                    {                        object objectArr = child.Properties["ServerBindings"].Value;                        string serverBindingStr = string.Empty;                        if (IsArray(objectArr))//如果有多個綁定站點時                        {                            object[] objectToArr = (object[])objectArr;                            serverBindingStr = objectToArr[0].ToString();                        }                        else//只有一個綁定站點                        {                            serverBindingStr = child.Properties["ServerBindings"].Value.ToString();                        }                        IISInfo iisInfo = new IISInfo();                        iisInfo.DomainPort = serverBindingStr;                        iisInfo.AppPool = child.Properties["AppPoolId"].Value.ToString();//應用程序池,有可能不準確                        object objComment=child.Properties["ServerComment"].Value;                        if (objComment != null)                        {                            iisInfo.SiteName = objComment.ToString();                        }                        iisList.Add(iisInfo);                    }                }            }            return iisList;        }        public static bool CreateAppPool(string appPoolName, string Username, string PassWord)        {            bool issucess = false;            try            {                //創建一個新程序池                DirectoryEntry newpool;                DirectoryEntry apppools = new DirectoryEntry("IIS://" + HostName + "/W3SVC/AppPools");                newpool = apppools.Children.Add(appPoolName, "IIsApplicationPool");                //設置屬性 訪問用戶名和密碼 一般采取默認方式                newpool.Properties["WAMUserName"][0] = Username;                newpool.Properties["WAMUserPass"][0] = Password;                newpool.Properties["AppPoolIdentityType"][0] = "3";                newpool.CommitChanges();                issucess = true;                return issucess;            }            catch // (Exception ex)             {                return false;            }        }        /// <summary>        /// 建立程序池后關聯相應應用程序及虛擬目錄        /// </summary>        public static void SetAPPToPool(string appname,string poolName)        {            //獲取目錄            DirectoryEntry getdir = new DirectoryEntry("IIS://localhost/W3SVC");            foreach (DirectoryEntry getentity in getdir.Children)            {                if (getentity.SchemaClassName.Equals("IIsWebServer"))                {                    //設置應用程序程序池 先獲得應用程序 在設定應用程序程序池                    //第一次測試根目錄                    foreach (DirectoryEntry getchild in getentity.Children)                    {                        if (getchild.SchemaClassName.Equals("IIsWebVirtualDir"))                        {                            //找到指定的虛擬目錄.                            foreach (DirectoryEntry getsite in getchild.Children)                            {                                if (getsite.Name.Equals(appname))                                {                                    //【測試成功通過】                                    getsite.Properties["AppPoolId"].Value = poolName;                                    getsite.CommitChanges();                                }                            }                        }                    }                }            }        }        /// <summary>        /// 判斷object對象是否為數組        /// </summary>        public static bool IsArray(object o)        {            return o is Array;        }    }    public class IISInfo    {        public string SiteName { get; set; }        public string DomainPort { get; set; }        public string AppPool { get; set; }    }}
View Code

然后,寫一個頁面來創建網站:

前端HTML:

 <form action="/SiteManage/CreateWebSite">        <fieldset>網站名稱(不能重復):————<input type="text" name="siteName" class="myInput" />  </fieldset>        <fieldset>網站基準目錄(服務器):———<input type="text" name="physicalPath" class="myInput" /></fieldset>        <fieldset>綁定域名(不能重復):————<input type="text" name="domain" class="myInput" /></fieldset>        <fieldset>網站壓縮文件路徑(服務器):—<input type="text" name="zipFile" class="myInput" value="@ViewBag.ZipFile" /> 如果服務器沒有網站壓縮文件,請先上傳。</fieldset>        <input type="submit" name="submit1" value="提交" />    </form>

后端Controller:

 public ActionResult CreateWebSite(string siteName, string physicalPath, string domain, string zipFile)        {            bool hasErr = false;            string message = "";            string webSiteFolder = "";            //檢查參數,physicalPath 允許不存在,之后解壓縮文件的時候將自動創建            if (string.IsNullOrEmpty(siteName) ||                 string.IsNullOrEmpty(physicalPath) ||                 string.IsNullOrEmpty(domain) ||                 string.IsNullOrEmpty(zipFile))            {                hasErr = true;                message = "參數不能為空!";            }                        //檢查是否已經包含了要綁定的域名,如果是,則不允許創建            if (!hasErr)            {                var list = IISControlHelper.IISWorker.GetServerBindings();                foreach (var item in list)                {                    if (string.Compare(item.DomainPort, domain, StringComparison.OrdinalIgnoreCase) > 0)                    {                        hasErr = true;                        message = domain + " 域名已經綁定過,不能創建綁定此域名的新站點。";                        break;                    }                }            }                        //檢查網站目錄并解壓縮文件到網站目錄            if (!hasErr)            {                try                {                    webSiteFolder = CheckWebSiteFolder(physicalPath, zipFile);                    if (System.IO.File.Exists(zipFile))                    {                        UnZipFile(zipFile, physicalPath);                    }                    else                    {                        message = zipFile+" 文件不存在!";                        hasErr = true;                    }                }                catch (Exception ex1)                {                    message = ex1.Message;                    hasErr = true;                }            }                        if (!hasErr)            {                try                {                                       //創建網站                    int siteNumber;                    siteNumber = IISControlHelper.IISWorker.CreateWebSite(siteName, webSiteFolder, "*:80:" + domain, true);                    message = siteNumber > 0 ? "成功" : "失敗";                }                catch (System.Runtime.InteropServices.COMException exCom)                {                    hasErr = true;                    if (exCom.HResult == -2147024713)                    {                        message = "網站名已經存在!";//(應用程序池IIS進程)文件已經存在,上面的方法默認會創建跟網站同名的應用程序池名稱                    }                    else                    {                        message = exCom.Message;                    }                }                catch (Exception ex2)                {                    hasErr = true;                    message = ex2.Message;                }                           }            ViewBag.SiteName = siteName;            ViewBag.PhysicalPath = webSiteFolder;            ViewBag.Domain = domain;            ViewBag.ResultDesc = message;            return View("CreateResult");        }

注意這里會創建一個跟站點名字同名的應用程序池,默認是.NET 4.0,創建后即啟動站點。

相關代碼下載,點擊這里。

 

4,ASP.NET MVC 上傳文件

前端HTML:

    <form action="/SiteManage/Upload" method="post" enctype="multipart/form-data">        上傳網站壓縮文件:<input type="file" name="file1" value="" style="width:300px;" class="myInput" /> <input type="submit" name="submit2" value="上傳" />        <span>@ViewBag.Message </span>    </form>

后端Controller:

public ActionResult Upload()        {            string message = "";            HttpPostedFileBase file = Request.Files["file1"];            if (System.IO.Path.GetExtension(file.FileName).ToLower() != ".zip")            {                message = "只能上傳ZIP格式的壓縮文件。";                return RedirectToAction("Index", new { zipFile = "", message });            }            else            {                string filePath = System.IO.Path.Combine(HttpContext.Server.MapPath("../Uploads"), System.IO.Path.GetFileName(file.FileName));                file.SaveAs(filePath);                message = "上傳成功";                return RedirectToAction("Index", new { zipFile= filePath,message});            }        }


注意Request.Files["file1"] 表示獲取前端HTML頁面的文件雙傳控件名字 file1 對應的文件。

5,.NET解壓縮文件

.NET 4.5之后,集成了文件解壓縮功能,下面是使用方法:

 /// <summary>        /// 解壓縮文件到指定目錄,將在指定目錄下解壓出一個壓縮文件名字的最終的目錄        /// </summary>        /// <param name="ZipPath">ZIP文件路徑</param>        /// <param name="ExtractPath">要解壓縮的目錄</param>        private void UnZipFile(string ZipPath,string ExtractPath)        {            //string NewFile = @"c:/users/exampleuser/NewFile.txt";            if (System.IO.File.Exists(ZipPath))            {                using (ZipArchive Archive = ZipFile.Open(ZipPath, ZipArchiveMode.Update))                {                    //Archive.CreateEntryFromFile(NewFile, "NewEntry.txt");                    //如果目錄下面有文件,將解壓縮失敗,所以之前先備份目錄                    Archive.ExtractToDirectory(ExtractPath);                }            }        }

注意這里支持ZIP格式,不是RAR格式,同時需要使用 using System.IO.Compression;相關的程序集。

6,備份文件夾

如果需要備份文件夾,可以使用Move 方法實現,看代碼:

  /// <summary>        /// 檢查站點目錄,如果原來的目錄已經存在,將自動備份,如果該目錄不存在,將自動創建        /// </summary>        /// <param name="physicalPath"></param>        /// <param name="zipFile"></param>        /// <returns></returns>        private  string CheckWebSiteFolder(string physicalPath, string zipFile)        {            string webSiteFolder = System.IO.Path.Combine(physicalPath, System.IO.Path.GetFileNameWithoutExtension(zipFile));            if (System.IO.Directory.Exists(webSiteFolder))            {                System.IO.Directory.Move(webSiteFolder, webSiteFolder + "_back" + DateTime.Now.ToString("yyyyMMddHHmmss"));            }            //此目錄            return webSiteFolder;

 7,給MVC頁面傳遞數據

可以使用ViewBag 方式,例如下面的方式:

 public ActionResult Index(string zipFile="",string message="")        {            string iisVersion = IISControlHelper.IISWorker.GetIIsVersion();            ViewBag.IISVerion = iisVersion;            ViewBag.ZipFile = zipFile;            ViewBag.Message = message;                      return View();        }

ViewBag 是動態類型,在前端頁面直接使用它既可。

也可以通過Action傳遞一個對象給頁面,方法如下:

 public ActionResult Index(string zipFile="",string message="") {      var siteList = IISControlHelper.IISWorker.GetServerBindings();      return View(siteList); }

然后,在 index.cshtml 頁面的頭部,引入這個Model:

@model List<IISControlHelper.IISInfo>@{    ViewBag.Title = "ASP.NET在線創建網站Demo";}

 

8,SQL語句創建Access數據庫

可以使用SqlServer的基本建表語句,但是有幾點不同,首先,不能使用User這樣的關鍵詞,然后,在創建自增字段上與SqlServer不同。

Access需要采用下面的方式:

[User ID] autoincrement PRIMARY KEY

不能使用下面的方式:

[User ID] Integer PRIMARY KEY autoincrement

PRIMARY KEY語句必須放在 autoincrement 之后,否則語法錯??梢姡珹ccess功能的確很簡單。

完整的一個建立表語句:

CREATE TABLE [Users]([User ID]  autoincrement PRIMARY KEY,[First Name] text,[Last Name] text,[Age] Integer)

PDF.NET SOD Ver5.3.3.0724 發布,增加了Access Code First 支持,可以生成上面的建表語句。

 9,VS復制項目生成的文件到另外一個項目運行目錄下

這個問題常見于DLL需要動態加載的情況下,該DLL是在另外一個項目下生成,主體項目運行前需要拷貝到當前運行目錄下。
如果DLL的源碼經常修改,手工復制比較費事情,采用項目的
生成時間--〉后期生成命令行,輸入下面類似的命令:

XCOPY "$(TargetPath)" "$(ProjectDir)../MainExeProj/bin/$(ConfigurationName)" /Y /D /R

這個命令會將當前項目生成的DLL復制到 跟當前項目文件夾同級的MainExeProj/bin文件夾下面去,$(ConfigurationName) 通常表示 Debug,Release.

10,使用XCopy備份指定日期之后的資料

使用下面的命令:

xcopy C:/SourceDoc D:/CopyedDoc /i /s /y /EXCLUDE:D:/CopyedDoc/excludeFile.txt /d:7-1-2010 

這將備份 SourceDoc 目錄下面的 7月1日之后所有的文件和文件夾,exclued 文件包含了要排除的文件,比如:
obj
bin
.jpeg
.png
.gif

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲日本成人女熟在线观看| 91欧美视频网站| 欧美黑人xxx| 97在线观看免费| www.日本久久久久com.| 亚洲аv电影天堂网| 97av在线视频| 国产91精品网站| 久久精品国产96久久久香蕉| 国产精品自在线| 裸体女人亚洲精品一区| 在线免费观看羞羞视频一区二区| 精品亚洲永久免费精品| 国产精品2018| 一本久久综合亚洲鲁鲁| 国产一区二区美女视频| 国产日产亚洲精品| 色综合天天狠天天透天天伊人| 欧美精品video| 国产精品视频一区国模私拍| 国产精品免费小视频| 欧美综合一区第一页| 91精品国产色综合久久不卡98口| 一区国产精品视频| 欧美一级bbbbb性bbbb喷潮片| 国产成人av在线播放| 欧美日韩一区二区免费视频| 精品高清一区二区三区| 欧美成人剧情片在线观看| www.亚洲成人| 欧美有码在线视频| 国产有码一区二区| 精品中文字幕久久久久久| 日韩国产在线看| 92看片淫黄大片欧美看国产片| 亚洲人成电影网站色| 精品人伦一区二区三区蜜桃网站| 夜夜嗨av色综合久久久综合网| 97久久久免费福利网址| 91精品国产自产91精品| 国产在线拍揄自揄视频不卡99| 亚洲天天在线日亚洲洲精| 最近2019好看的中文字幕免费| 最近2019中文字幕大全第二页| 亚洲国产精品资源| 国产一区二区三区日韩欧美| 久久久久国产精品一区| 91成品人片a无限观看| 亚洲男人天堂2023| 国产美女高潮久久白浆| 国产亚洲成av人片在线观看桃| 亚洲国产精品热久久| 国产主播喷水一区二区| 日韩一区在线视频| 伊人久久久久久久久久久| 久久久人成影片一区二区三区观看| 国产精品视频免费在线观看| 57pao成人国产永久免费| 欧美一区第一页| 亚洲福利在线视频| 国产日韩在线免费| 欧美激情综合亚洲一二区| 国产日韩欧美中文| 亚洲视频在线免费观看| 久久久之久亚州精品露出| 91亚洲一区精品| 亚洲日本成人网| 国产欧美日韩91| 久久夜色精品国产亚洲aⅴ| 国产精品久久不能| 成人美女av在线直播| 国产精品福利小视频| 欧美精品第一页在线播放| 欧美xxxx做受欧美| 国产一区二区在线免费视频| 美女999久久久精品视频| 欧美日韩国产综合视频在线观看中文| www.日本久久久久com.| 亚洲a区在线视频| 亚洲美腿欧美激情另类| 欧美专区在线观看| 在线播放日韩专区| 亚洲综合日韩中文字幕v在线| 91av网站在线播放| 日韩av电影在线网| 性欧美视频videos6一9| 日本成人黄色片| 97视频免费观看| 久久国产精品久久精品| 中文字幕欧美亚洲| 91青草视频久久| 91精品在线观看视频| 久久久久久91香蕉国产| 亚洲精品小视频在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 日本高清视频一区| 亚洲欧美中文日韩在线| 懂色av影视一区二区三区| 97成人精品区在线播放| 欧美日本在线视频中文字字幕| 亚洲国产欧美一区二区三区久久| 成人黄色短视频在线观看| 欧美黄色免费网站| 亚洲精品91美女久久久久久久| 亚洲qvod图片区电影| 亚洲欧美国产日韩中文字幕| 最近免费中文字幕视频2019| 中文字幕国产亚洲2019| 欧美日韩国产麻豆| 亚洲最大福利网| 欧美性猛交xxxx免费看| 久久免费高清视频| 亚洲欧美日韩在线高清直播| 51ⅴ精品国产91久久久久久| 亚洲福利小视频| 亚洲女人天堂av| 色av中文字幕一区| 97色在线视频观看| 91精品国产九九九久久久亚洲| 亚洲香蕉成人av网站在线观看| 日韩av网站大全| 97久久伊人激情网| 国产噜噜噜噜噜久久久久久久久| 91在线国产电影| 日日骚av一区| 久久精品成人一区二区三区| 日韩在线视频网| www.久久久久| 久久国产精品亚洲| 亚洲va电影大全| 中文字幕亚洲无线码a| 中文字幕亚洲无线码在线一区| 欧美亚洲日本网站| 在线看日韩欧美| 成人h猎奇视频网站| 日韩欧美一区二区三区久久| 91干在线观看| 川上优av一区二区线观看| 久久久中文字幕| 久久人人爽人人爽人人片av高请| 欧美精品精品精品精品免费| 久久久久久免费精品| 超碰91人人草人人干| 精品伊人久久97| 国产精品久久久久久久9999| 日韩精品999| 欧美大学生性色视频| 亚洲成人国产精品| 色婷婷亚洲mv天堂mv在影片| 日韩女优人人人人射在线视频| 亚洲自拍偷拍色图| 2023亚洲男人天堂| 亚洲精品资源在线| 欧美激情精品久久久久久免费印度| 亚洲免费人成在线视频观看| 91久久国产婷婷一区二区| 国产精品电影观看| 中文字幕久精品免费视频| 日韩av在线免费观看一区| 国产精品99久久久久久白浆小说| 亚洲欧美国产日韩天堂区| 91在线观看免费观看| 日本欧美爱爱爱| 亚洲缚视频在线观看|