亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

WinForm 上傳共享文件夾:SMB 憑據(jù)、流式復(fù)制與 1219 排錯(cuò)

WinForm 上傳共享文件夾:SMB 憑據(jù)、流式復(fù)制與 1219 排錯(cuò) 簡(jiǎn)介這份資料是一套基于VS2010與C# Winform的文件上傳示例面向需要把本地文件寫(xiě)入局域網(wǎng)共享目錄的開(kāi)發(fā)者也可用于企業(yè)內(nèi)部數(shù)據(jù)傳輸、共享盤(pán)上傳等場(chǎng)景。壓縮包共23個(gè)文件約36KB以6個(gè)cs源碼為核心配有sln解決方案與csproj項(xiàng)目配置并包含exe、pdb、resources/resx、settings等編譯調(diào)試與界面資源文件結(jié)構(gòu)適合直接打開(kāi)對(duì)照學(xué)習(xí)。已有1429人學(xué)習(xí)。代碼圍繞文件選擇、UNC路徑與憑據(jù)連接、FileStream/NetworkStream讀寫(xiě)、BackgroundWorker進(jìn)度反饋、異常處理和文件類(lèi)型大小校驗(yàn)展開(kāi)可幫助讀者理解從界面交互到網(wǎng)絡(luò)共享寫(xiě)入的完整鏈路并據(jù)此排查權(quán)限不足、連接失敗等常見(jiàn)問(wèn)題快速遷移到自己的上傳模塊中。1. 從「復(fù)制粘貼能用」到線上必翻車(chē)WinForm 上傳共享文件夾的真實(shí)邊界某個(gè)做設(shè)備巡檢的桌面項(xiàng)目客戶(hù)要求把每天生成的報(bào)表直接寫(xiě)進(jìn)機(jī)房的共享文件夾理由很樸素那邊已經(jīng)有備份策略不想再維護(hù)額外的傳輸服務(wù)。聽(tīng)起來(lái)File.Copy一行就能收工真上線第一周就翻車(chē)了開(kāi)發(fā)機(jī)上跑得好好的裝到車(chē)間電腦上彈「拒絕訪問(wèn)」換一臺(tái)機(jī)器又變成「找不到網(wǎng)絡(luò)路徑」還有一臺(tái)傳到 60% 卡死不動(dòng)。問(wèn)題不在 C# 語(yǔ)法而在「文件上傳到共享文件夾」這件事本身牽扯三樣?xùn)|西SMB 會(huì)話、進(jìn)程身份、Windows 憑據(jù)緩存。WinForm 進(jìn)程默認(rèn)一樣都沒(méi)有。這篇記錄按「先看清鏈路 → 再寫(xiě)上傳骨架 → 再解決憑據(jù) → 最后排坑」的順序走一遍代碼可以直接抄坑我盡量標(biāo)在你會(huì)踩的位置上。2. 拆開(kāi) SMB 上傳鏈路UNC 路徑、身份上下文與三種憑據(jù)方案2.1 一次寫(xiě)\\server\share到底經(jīng)過(guò)了什么當(dāng)你寫(xiě)下\\fileserver\share\report.xlsx這個(gè)路徑時(shí)Win32 的CreateFile并不會(huì)自己去連網(wǎng)絡(luò)它把活交給 mpr多重提供程序路由器重定向器重定向器再落到 SMB 客戶(hù)端驅(qū)動(dòng)上。整個(gè)過(guò)程拆開(kāi)是四步解析主機(jī)名 → 建立到 445 端口的 TCP 連接 → 協(xié)商 SMB 版本并完成身份認(rèn)證得到一個(gè)會(huì)話Session→ 對(duì)這個(gè)共享做樹(shù)連接Tree Connect此后才是 CREATE / WRITE / CLOSE 這些文件級(jí)操作。真正決定成敗的是第三步。認(rèn)證用的憑據(jù)來(lái)自當(dāng)前進(jìn)程令牌域環(huán)境里走 Kerberos工作組或本地賬戶(hù)走 NTLM。關(guān)鍵在于整條鏈路上沒(méi)有任何一個(gè)參數(shù)能讓你「這次寫(xiě)入用 A 賬號(hào)下次用 B 賬號(hào)」。憑據(jù)只在建會(huì)話時(shí)用一次之后緩存在內(nèi)核的會(huì)話表里按「服務(wù)器 用戶(hù)名」索引后續(xù)所有 IO 直接復(fù)用。這解釋了兩個(gè)最常見(jiàn)的困惑。第一為什么開(kāi)發(fā)機(jī)上一切正?!阍谫Y源管理器里手輸過(guò)一次密碼會(huì)話已經(jīng)被建好了CtrlF5 調(diào)試的進(jìn)程正好蹭上了這個(gè)會(huì)話。第二為什么兩個(gè)不同賬號(hào)往同一臺(tái)服務(wù)器傳文件會(huì)報(bào) 1219因?yàn)閮?nèi)核發(fā)現(xiàn)「這臺(tái)服務(wù)器已經(jīng)有一條屬于別人的會(huì)話了」它拒絕在同一條會(huì)話上疊加第二套憑據(jù)。提示判斷當(dāng)前有沒(méi)有活著的會(huì)話用net use看列表或者Get-SmbConnection看客戶(hù)端側(cè)連接明細(xì)比猜快得多。2.2 三種身份方案先選型再寫(xiě)代碼WinForm 上傳到共享文件夾本質(zhì)上是在回答「以誰(shuí)的身份寫(xiě)」這個(gè)問(wèn)題只有三條路方案實(shí)現(xiàn)方式適用場(chǎng)景主要代價(jià)當(dāng)前登錄用戶(hù)不寫(xiě)任何代碼直接寫(xiě) UNC 路徑域環(huán)境且登錄賬號(hào)已被授予共享寫(xiě)權(quán)限換機(jī)器、換賬號(hào)就失效運(yùn)維無(wú)法自證顯式憑據(jù)建會(huì)話WNetAddConnection2mpr.dll工作組環(huán)境、NAS、客戶(hù)只給一個(gè)專(zhuān)用上傳賬號(hào)需要處理多重連接沖突與連接釋放登錄令牌模擬LogonUserWindowsIdentity.Impersonate一次進(jìn)程內(nèi)要訪問(wèn)多臺(tái)不同憑據(jù)的服務(wù)器令牌生命周期管理更繞容易漏掉 Undo絕大多數(shù)現(xiàn)場(chǎng)我推薦第二條。原因是它足夠「局部」連接是進(jìn)程級(jí)的、可顯式釋放的出問(wèn)題只影響這一臺(tái)上傳功能不會(huì)污染整個(gè)應(yīng)用的執(zhí)行上下文。第三條更適合「一臺(tái)客戶(hù)端要同時(shí)往三臺(tái)不同 NAS 寫(xiě)」的極端場(chǎng)景如果只是往一臺(tái)文件服務(wù)器寫(xiě)用WNetAddConnection2就夠別把簡(jiǎn)單問(wèn)題復(fù)雜化。有一個(gè)必須提前說(shuō)清的邊界WNetAddConnection2建立的連接屬于當(dāng)前登錄會(huì)話不是屬于進(jìn)程。進(jìn)程退出連接可能還在反過(guò)來(lái)如果同會(huì)話里別的程序已經(jīng)用另一個(gè)賬號(hào)連過(guò)這臺(tái)服務(wù)器你這邊就會(huì)撞 1219。所以代碼里必須配對(duì)寫(xiě)「建立」和「斷開(kāi)」不能只建不斷。2.3 先用手把通道驗(yàn)證通再動(dòng) C#寫(xiě)代碼之前先用 PowerShell 把「網(wǎng)絡(luò)通、認(rèn)證通、能寫(xiě)」這三件事分開(kāi)驗(yàn)證。這一步能省掉后面 80% 的瞎猜# 1) 只驗(yàn)端口不涉及任何憑據(jù)用來(lái)區(qū)分「網(wǎng)絡(luò)問(wèn)題」和「權(quán)限問(wèn)題」 Test-NetConnection -ComputerName fileserver -Port 445 # 2) 用目標(biāo)上傳賬號(hào)顯式建一次會(huì)話 # 用戶(hù)名格式三選一DOMAIN\user、fileserver\user本地賬戶(hù)、.\user net use \\fileserver\share /user:DOMAIN\uploader Pssw0rd # 3) 寫(xiě)一個(gè)探針文件確認(rèn)共享目錄真的有寫(xiě)權(quán)限不只是讀 Set-Content -Path \\fileserver\share\_probe.txt -Value ok -Encoding UTF8 # 4) 用完立刻刪掉避免它和你后面調(diào)試的憑據(jù)打架 net use \\fileserver\share /delete第 1 步失敗說(shuō)明是網(wǎng)絡(luò)或防火墻445 被攔、主機(jī)名解析不到都會(huì)在這里暴露第 2 步失敗看返回碼1326 是賬號(hào)密碼不對(duì)1311 是找不到登錄服務(wù)器域控不可達(dá)第 3 步失敗但第 2 步成功說(shuō)明賬號(hào)能連上但共享 ACL 或 NTFS 權(quán)限沒(méi)給寫(xiě)這是純運(yùn)維問(wèn)題代碼怎么寫(xiě)都沒(méi)用。第 4 步經(jīng)常被跳過(guò)然后調(diào)試時(shí)莫名其妙報(bào) 1219。養(yǎng)成習(xí)慣手動(dòng)驗(yàn)證完就刪別留在會(huì)話表里。另外補(bǔ)一句關(guān)于映射盤(pán)不要用Z:\這種盤(pán)符。映射盤(pán)只在建立它的那個(gè)登錄會(huì)話內(nèi)可見(jiàn)服務(wù)、計(jì)劃任務(wù)、另一個(gè)用戶(hù)跑的進(jìn)程統(tǒng)統(tǒng)看不到。共享路徑永遠(yuǎn)寫(xiě) UNC。3. WinForm 端的上傳骨架選文件、跑后臺(tái)、報(bào)進(jìn)度3.1 界面線程和上傳線程的分工WinForm 里最容易犯的錯(cuò)不是上傳失敗而是上傳成功但窗口卡成白板。File.Copy和同步的FileStream.Write都是阻塞調(diào)用放在按鈕事件里UI 線程一堵進(jìn)度條不動(dòng)、取消按鈕點(diǎn)不動(dòng)用戶(hù)直接判定「程序死了」。正確寫(xiě)法是把上傳整體丟進(jìn)Task.Run進(jìn)度用IProgressT回報(bào)。ProgressT在構(gòu)造時(shí)捕獲當(dāng)前的SynchronizationContextReport會(huì)自動(dòng)BeginInvoke回 UI 線程所以你在回調(diào)里直接改控件屬性是安全的不用手寫(xiě)Invoke。private CancellationTokenSource _cts; private async void btnUpload_Click(object sender, EventArgs e) { if (openFileDialog1.ShowDialog() ! DialogResult.OK) return; _cts new CancellationTokenSource(); btnUpload.Enabled false; progressBar1.Value 0; // ProgressT 在 UI 線程構(gòu)造回調(diào)自動(dòng)回到 UI 線程 var progress new ProgressUploadProgress(p { progressBar1.Value (int)(p.Percent * 100); lblStatus.Text ${p.CurrentFile} {p.Sent / 1024 / 1024}MB / {p.Total / 1024 / 1024}MB; }); try { string uncDir \\fileserver\share\reports; await Task.Run(() FileUploader.UploadAsync( openFileDialog1.FileName, uncDir, progress, _cts.Token)); lblStatus.Text 上傳完成; } catch (OperationCanceledException) { lblStatus.Text 已取消; } catch (Exception ex) { // 不要只彈 ex.MessageWin32Exception 的 NativeErrorCode 才是關(guān)鍵 lblStatus.Text 上傳失敗 ex.Message; } finally { btnUpload.Enabled true; _cts.Dispose(); } }async void只允許出現(xiàn)在事件處理器上這是唯一合法場(chǎng)景await Task.Run把阻塞的 IO 移到線程池UI 線程立刻返回消息循環(huán)。finally里恢復(fù)按鈕狀態(tài)否則一次異常之后按鈕永遠(yuǎn)是灰的。3.2 流式復(fù)制別再用File.Copy一把梭File.Copy在局域網(wǎng)小文件上沒(méi)問(wèn)題但它有三個(gè)硬傷沒(méi)有進(jìn)度、不能取消、失敗后目標(biāo)端留下半截文件。自己寫(xiě)流式復(fù)制三個(gè)問(wèn)題一起解決。public sealed class UploadProgress { public long Total { get; set; } public long Sent { get; set; } public string CurrentFile { get; set; } string.Empty; public double Percent Total 0 ? 0 : (double)Sent / Total; } public static async Task UploadAsync(string localPath, string uncDirectory, IProgressUploadProgress progress, CancellationToken token) { var fileName Path.GetFileName(localPath); var targetPath Path.Combine(uncDirectory, fileName); var tempPath targetPath .part; // 先寫(xiě)臨時(shí)名成功后改名 const int BufferSize 1024 * 1024; // 1MBSMB2 下這個(gè)塊大小吞吐比較穩(wěn) var buffer new byte[BufferSize]; // 會(huì)進(jìn) LOH但只分配一次可接受 using (var source new FileStream(localPath, FileMode.Open, FileAccess.Read, FileShare.Read, BufferSize, FileOptions.SequentialScan)) using (var target new FileStream(tempPath, FileMode.Create, FileAccess.Write, FileShare.None, BufferSize, FileOptions.WriteThrough)) { long total source.Length, sent 0; int read; while ((read await source.ReadAsync(buffer, 0, buffer.Length, token)) 0) { token.ThrowIfCancellationRequested(); await target.WriteAsync(buffer, 0, read, token); sent read; progress?.Report(new UploadProgress { Total total, Sent sent, CurrentFile fileName }); } await target.FlushAsync(token); } // 同卷 Move 在 SMB 上是 rename 操作讀端不會(huì)看到半個(gè)文件 if (File.Exists(targetPath)) File.Delete(targetPath); File.Move(tempPath, targetPath); }參數(shù)逐個(gè)說(shuō)。BufferSize取 1MB小于 64KB 時(shí)單次 WRITE 太小、往返次數(shù)多吞吐上不去大于 4MB 在千兆網(wǎng)卡上收益已經(jīng)不明顯反而放大單次失敗的重傳代價(jià)1MB 是常見(jiàn)的折中值。FileOptions.SequentialScan告訴系統(tǒng)這是順序讀它會(huì)提前預(yù)讀機(jī)械盤(pán)上提升明顯。FileShare.Read允許別人同時(shí)讀源文件避免「文件正被占用」目標(biāo)端用FileShare.None因?yàn)閭髁艘话氲奈募辉摫蝗魏稳舜蜷_(kāi)。FileOptions.WriteThrough是關(guān)掉寫(xiě)緩存直寫(xiě)安全但慢。如果共享盤(pán)本身有 UPS、鏈路穩(wěn)定把它去掉吞吐會(huì)好一截如果是跨機(jī)房、鏈路抖保留它更穩(wěn)。這是取舍不是對(duì)錯(cuò)。最后兩行是「原子改名」代碼里用的是 .NET Framework 寫(xiě)法因?yàn)镕ile.Move的 overwrite 重載要 .NET Core 3.0 才有。.NET 6 直接File.Move(tempPath, targetPath, true)。3.3 取消、超時(shí)與「看起來(lái)卡住」CancellationToken的檢查點(diǎn)要放在ReadAsync之后、WriteAsync之前。放在循環(huán)開(kāi)頭也行但那樣用戶(hù)點(diǎn)了取消要等當(dāng)前這 1MB 寫(xiě)完才響應(yīng)體感仍然卡。放中間是讓取消在「讀完一塊、還沒(méi)寫(xiě)」的空隙生效最大延遲就是一次塊寫(xiě)入的時(shí)間。超時(shí)不是CancellationToken能解決的。SMB 的 IO 沒(méi)有官方的 per-operation 超時(shí) API網(wǎng)絡(luò)斷了之后WriteAsync可能掛幾十秒才拋IOException。穩(wěn)妥做法是在外層再套一層Task.WhenAny(uploadTask, Task.Delay(TimeSpan.FromMinutes(10), token))超時(shí)了就取消并提示「網(wǎng)絡(luò)異常請(qǐng)重試」同時(shí)刪掉目標(biāo)端的.part文件。這個(gè)兜底邏輯不優(yōu)雅但比讓用戶(hù)對(duì)著卡死的進(jìn)度條干等強(qiáng)。另外進(jìn)度回調(diào)的頻率要控制。1MB 一塊一個(gè) 500MB 的文件就是 500 次Report每次都要BeginInvoke到 UI 線程消息隊(duì)列會(huì)被刷屏。常見(jiàn)做法是加個(gè)時(shí)間戳兩次回調(diào)間隔小于 100ms 就跳過(guò)只更新字節(jié)數(shù)不刷新界面。4. 帶憑據(jù)訪問(wèn)WNetAddConnection2封裝與配置落地4.1 為什么net use能通、程序里卻拒絕訪問(wèn)這是現(xiàn)場(chǎng)最高頻的誤解。運(yùn)維在服務(wù)器上net use測(cè)試通過(guò)就認(rèn)為「權(quán)限沒(méi)問(wèn)題」結(jié)果客戶(hù)端一跑就報(bào)拒絕訪問(wèn)。原因在于net use是在你的交互式登錄會(huì)話里建的連接而 WinForm 在客戶(hù)機(jī)上可能以另一個(gè)本地賬號(hào)運(yùn)行甚至以計(jì)劃任務(wù)的服務(wù)賬戶(hù)運(yùn)行那是完全獨(dú)立的登錄會(huì)話會(huì)話表是空的。同一個(gè)登錄會(huì)話內(nèi)的進(jìn)程共享內(nèi)核里的憑據(jù)緩存所以「我先在資源管理器里輸過(guò)密碼然后程序就能跑了」這種現(xiàn)象是真的但它不可交付。客戶(hù)換臺(tái)機(jī)器、換個(gè)賬號(hào)、重啟一次連接就沒(méi)了。結(jié)論很硬上傳功能自己負(fù)責(zé)建連接不能依賴(lài)任何外部預(yù)先建立的會(huì)話。4.2 P/Invoke 封裝與生命周期管理WNetAddConnection2在 mpr.dll 里簽名不復(fù)雜麻煩的是結(jié)構(gòu)體和標(biāo)志位。[StructLayout(LayoutKind.Sequential)] internal struct NETRESOURCE { public int dwScope; public int dwType; // 1 RESOURCETYPE_DISK public int dwDisplayType; public int dwUsage; public string lpLocalName; // 留 null 表示不做盤(pán)符映射 public string lpRemoteName; // \\fileserver\share public string lpComment; public string lpProvider; } internal static class NativeNet { [DllImport(mpr.dll, CharSet CharSet.Unicode)] public static extern int WNetAddConnection2(ref NETRESOURCE nr, string password, string username, int flags); [DllImport(mpr.dll, CharSet CharSet.Unicode)] public static extern int WNetCancelConnection2(string name, int flags, bool force); } public sealed class NetworkShare : IDisposable { private const int RESOURCETYPE_DISK 1; private const int CONNECT_TEMPORARY 0x00000004; private readonly string _remote; private bool _connected; public NetworkShare(string uncPath, string userName, string password) { _remote uncPath.TrimEnd(\\); var nr new NETRESOURCE { dwType RESOURCETYPE_DISK, lpRemoteName _remote, lpLocalName null }; int rc NativeNet.WNetAddConnection2(ref nr, password, userName, CONNECT_TEMPORARY); if (rc ! 0) { // 1219 單獨(dú)提示運(yùn)維一看就懂 string hint rc 1219 ? 該服務(wù)器已有其他賬號(hào)的連接請(qǐng)先斷開(kāi)或重啟客戶(hù)端 : 連接共享失敗; throw new IOException(${hint}錯(cuò)誤碼 {rc}); } _connected true; } public void Dispose() { if (!_connected) return; NativeNet.WNetCancelConnection2(_remote, 0, true); _connected false; } }幾個(gè)參數(shù)值得單獨(dú)講。dwType 1是磁盤(pán)資源寫(xiě)錯(cuò)成 0 會(huì)返回 87參數(shù)錯(cuò)誤。lpLocalName null表示不映射盤(pán)符——一旦映射了盤(pán)符這個(gè)盤(pán)符只對(duì)當(dāng)前登錄會(huì)話有效其他進(jìn)程照樣看不到反而增加清理負(fù)擔(dān)。flags用CONNECT_TEMPORARY0x4而不是 00 表示持久連接會(huì)在用戶(hù)配置文件里留下重連記錄客戶(hù)機(jī)重啟后自動(dòng)重連憑據(jù)過(guò)期了就是一個(gè)莫名其妙的失敗源。臨時(shí)連接在會(huì)話結(jié)束或進(jìn)程退出時(shí)自動(dòng)清理更干凈。Dispose里用force true是為了在還有句柄打開(kāi)的情況下也能斷開(kāi)代價(jià)是可能中斷別人的操作。如果上傳是在獨(dú)立進(jìn)程里跑安全如果是共享進(jìn)程謹(jǐn)慎。我一般在上傳方法的finally里釋放不給它泄漏的機(jī)會(huì)。userName的三種格式必須區(qū)分清楚DOMAIN\user走域認(rèn)證fileserver\user走那臺(tái)機(jī)器上的本地賬戶(hù).\user走本機(jī)賬戶(hù)。寫(xiě)錯(cuò)了不會(huì)報(bào)「格式錯(cuò)誤」只會(huì)返回 1326讓你誤以為密碼打錯(cuò)了。4.3 把憑據(jù)放進(jìn)配置DPAPI 加密與啟動(dòng)預(yù)檢明文密碼寫(xiě)在app.config里是能過(guò)編譯、過(guò)不了驗(yàn)收的寫(xiě)法。常見(jiàn)做法是用 DPAPI 的ProtectedData作用域選CurrentUser——同一臺(tái)機(jī)器上換個(gè)賬號(hào)都解不開(kāi)比明文強(qiáng)得多。// 寫(xiě)入安裝或首次配置時(shí)執(zhí)行一次 var cipher ProtectedData.Protect( Encoding.UTF8.GetBytes(txtPassword.Text), null, DataProtectionScope.CurrentUser); File.WriteAllText(C:\ProgramData\App\upload.dat, Convert.ToBase64String(cipher)); // 讀取 var raw Convert.FromBase64String(File.ReadAllText(C:\ProgramData\App\upload.dat)); var password Encoding.UTF8.GetString( ProtectedData.Protect(raw, null, DataProtectionScope.CurrentUser) is var _ ? raw : raw);上面讀取那段是我故意寫(xiě)殘的示意正確的是ProtectedData.Unprotect(raw, null, DataProtectionScope.CurrentUser)。參數(shù)里的null是可選熵值加上它可以讓別的程序即使同賬號(hào)也解不開(kāi)一般填一個(gè)固定的字節(jié)數(shù)組常量。配置項(xiàng)至少要有四個(gè)RemoteRootUNC 根、UserName、加密后的密碼文件路徑、ProbeOnStartup。然后做一個(gè)啟動(dòng)預(yù)檢應(yīng)用啟動(dòng)時(shí)在后臺(tái)線程建一次連接、寫(xiě)一個(gè)_probe_機(jī)器名.tmp文件、刪掉、斷開(kāi)。失敗就把主界面上的上傳按鈕置灰并給出錯(cuò)誤碼。這個(gè)動(dòng)作 200 毫秒但能把「用戶(hù)點(diǎn)了上傳才報(bào)錯(cuò)」變成「一進(jìn)來(lái)就知道環(huán)境不通」省掉大量溝通成本。5. 避坑清單上線后最容易撞的六類(lèi)現(xiàn)場(chǎng)5.1 拒絕訪問(wèn)、多重連接與「目錄不存在」的假象現(xiàn)象一Directory.Exists(\\fileserver\share\reports)返回 false但目錄明明存在。原因很反直覺(jué)當(dāng)進(jìn)程對(duì)共享沒(méi)有訪問(wèn)權(quán)限時(shí)Directory.Exists不會(huì)拋異常它直接返回 false把「沒(méi)權(quán)限」和「不存在」糊成一個(gè)結(jié)果。你按「目錄不存在」去建目錄再收到一個(gè)拒絕訪問(wèn)就徹底糊涂了。解決方式是永遠(yuǎn)不要用Directory.Exists做權(quán)限判斷改成顯式嘗試寫(xiě)探針文件把UnauthorizedAccessException單獨(dú)捕獲并提示「共享無(wú)寫(xiě)權(quán)限」?,F(xiàn)象二報(bào) 1219提示「不允許一個(gè)用戶(hù)使用一個(gè)以上用戶(hù)名與一個(gè)服務(wù)器或共享資源的多重連接」。原因是當(dāng)前登錄會(huì)話里已經(jīng)有一條到這臺(tái)服務(wù)器的會(huì)話屬于另一個(gè)賬號(hào)。常見(jiàn)觸發(fā)順序是運(yùn)維先用管理員賬號(hào)net use測(cè)過(guò)沒(méi)刪你的程序再用上傳賬號(hào)連。解決辦法有兩條一是上線前無(wú)條件執(zhí)行一次WNetCancelConnection2清場(chǎng)注意可能影響同會(huì)話的其他程序二是承認(rèn)這個(gè)限制、在錯(cuò)誤提示里直接告訴用戶(hù)「請(qǐng)重啟客戶(hù)端或斷開(kāi)已有連接」。我的選擇是先清場(chǎng)再連失敗再給提示?,F(xiàn)象三錯(cuò)誤碼 1326 與 86 混著出現(xiàn)。1326 是「登錄失敗用戶(hù)名或密碼不正確」86 是「指定的網(wǎng)絡(luò)密碼不正確」。兩個(gè)都指向憑據(jù)但前者多半是用戶(hù)名格式寫(xiě)錯(cuò)少寫(xiě)了DOMAIN\后者多半是密碼里含有特殊字符在配置文件里被轉(zhuǎn)義吃掉了。密碼里帶、、%時(shí)建議直接改用文件存 DPAPI 密文不要走 XML 屬性。5.2 大文件中斷、超時(shí)與共享盤(pán)「休眠」現(xiàn)象四小文件正常超過(guò) 500MB 的文件傳到一半報(bào) 64「指定的網(wǎng)絡(luò)名不再可用」重試又好了。這通常不是代碼問(wèn)題。一是網(wǎng)絡(luò)設(shè)備或防火墻對(duì)長(zhǎng)連接有會(huì)話老化時(shí)間空閑幾十秒就掐二是目標(biāo)端是做了休眠策略的 NAS磁盤(pán)休眠喚醒期間 IO 掛起客戶(hù)端等不及就斷了。解決上分兩層應(yīng)用層做重試捕獲IOException后最多重試 3 次每次間隔遞增2s、4s、8s并且從斷點(diǎn)續(xù)傳而不是從頭傳否則 1GB 文件重試三次等于傳三遍環(huán)境層推動(dòng)運(yùn)維把共享端休眠關(guān)掉或者把心跳包間隔壓到小于老化時(shí)間?,F(xiàn)象五進(jìn)度條走到 100%但文件大小是 0 或者不完整。這是沒(méi)做 flush 就關(guān)流的典型癥狀。FileStream的Close/Dispose通常會(huì) flush但如果用了BufferedStream且外層提前異常緩沖區(qū)里的數(shù)據(jù)就丟了。解決就是顯式await target.FlushAsync(token)再進(jìn)using的釋放流程順序不能反。同時(shí)保留.part后綴讓任何人都能一眼看出這是半成品。5.3 文件名、長(zhǎng)路徑與臨時(shí)占用現(xiàn)象六路徑總長(zhǎng)超過(guò) 260 字符就拋PathTooLongException或者中文文件名在共享端變成亂碼。長(zhǎng)度問(wèn)題在 .NET Framework 上尤其頑固光加\\?\UNC\前綴不夠還要在app.config里開(kāi)長(zhǎng)路徑開(kāi)關(guān)并且在應(yīng)用清單里聲明longPathAware三件事缺一不可configuration runtime AppContextSwitchOverrides valueSwitch.System.IO.UseLegacyPathHandlingfalse;Switch.System.IO.BlockLongPathsfalse / /runtime /configuration亂碼則基本不是編碼問(wèn)題而是文件名里帶了 Windows 不允許的字符\ / : * ? |或者尾部是空格、點(diǎn)號(hào)這類(lèi)名字在本地能建寫(xiě)到 SMB 上被規(guī)范化后就成了另一個(gè)名字。上傳前統(tǒng)一做一次文件名清洗并且顯式拒絕CON、PRN、AUX、NUL這些保留名——它們即便加了擴(kuò)展名在部分共享端仍然建不出來(lái)。還有一類(lèi)不在代碼里目標(biāo)端的殺毒軟件或同步客戶(hù)端會(huì)短暫鎖住剛寫(xiě)完的文件導(dǎo)致File.Move拋IOException「文件正被另一進(jìn)程使用」。解決辦法是給改名動(dòng)作加一個(gè)小重試3 次每次 200ms比一失敗就報(bào)錯(cuò)體面得多。6. 進(jìn)階把「?jìng)鬟^(guò)去」變成可驗(yàn)證的上傳6.1 邊寫(xiě)邊算哈希落地后再核一次文件「?jìng)鬟^(guò)去了」和「?jìng)鲗?duì)了」是兩件事。千兆內(nèi)網(wǎng)也有靜默損壞的概率跨公網(wǎng)鏈路更高。穩(wěn)妥做法是在寫(xiě)入的同時(shí)用CryptoStream或增量HashAlgorithm算一遍 SHA256傳完再?gòu)墓蚕矶俗x回來(lái)算一遍對(duì)比。注意讀回校驗(yàn)會(huì)把 IO 翻倍大文件建議只在前 N 次上傳或抽樣時(shí)做。// 寫(xiě)的同時(shí)算哈希避免二次讀源文件 using var sha SHA256.Create(); using var crypto new CryptoStream(Stream.Null, sha, CryptoStreamMode.Write); int read; while ((read await source.ReadAsync(buffer, 0, buffer.Length, token)) 0) { await target.WriteAsync(buffer, 0, read, token); crypto.Write(buffer, 0, read); // 同一份字節(jié)喂給哈希 sent read; } crypto.FlushFinalBlock(); string localHash Convert.ToHexString(sha.Hash); // .NET Framework 用 BitConverter.ToStringCryptoStream掛到Stream.Null上是刻意的它只負(fù)責(zé)吞字節(jié)算摘要不落盤(pán)、不額外占空間。FlushFinalBlock必須調(diào)用否則最后一塊不進(jìn)哈希算出來(lái)的值永遠(yuǎn)對(duì)不上——這個(gè)坑我踩過(guò)一次查了兩個(gè)小時(shí)才發(fā)現(xiàn)是少了一行。6.2 一個(gè)能自證的日志格式上傳失敗最難查的是「到底卡在哪一步」。日志里至少要有五個(gè)字段時(shí)間、源文件全路徑、目標(biāo) UNC 全路徑、當(dāng)前階段連接 / 寫(xiě)入 / 改名 / 校驗(yàn)、錯(cuò)誤碼。階段字段是關(guān)鍵它把「拒絕訪問(wèn)」定位到「連接階段」還是「改名階段」指向的排查方向完全不同。階段典型錯(cuò)誤碼該找誰(shuí)連接53 / 64 / 67 / 1219 / 1326網(wǎng)絡(luò)或賬號(hào)運(yùn)維寫(xiě)入5 / 39 / 112共享 ACL、磁盤(pán)滿改名32 / 5目標(biāo)端占用、權(quán)限繼承校驗(yàn)無(wú)錯(cuò)誤碼哈希不一致鏈路質(zhì)量、中間設(shè)備6.3 上線前我會(huì)強(qiáng)制跑的三條檢查第一條斷網(wǎng)重連。上傳到一半拔網(wǎng)線確認(rèn)程序在 10 分鐘內(nèi)給出明確失敗提示.part文件被清理且重試能從頭再來(lái)不報(bào) 1219。第二條換賬號(hào)跑。用另一個(gè)本地賬號(hào)登錄同一臺(tái)機(jī)器跑一遍上傳驗(yàn)證程序不依賴(lài)當(dāng)前用戶(hù)的任何會(huì)話緩存。第三條滿盤(pán)與只讀。把共享目錄臨時(shí)設(shè)成只讀確認(rèn)提示是「無(wú)寫(xiě)權(quán)限」而不是「目錄不存在」。這三條每次發(fā)版前跑一遍五分鐘能擋掉絕大多數(shù)的現(xiàn)場(chǎng)工單。從那以后我每次交付這類(lèi)上傳功能都會(huì)在啟動(dòng)時(shí)強(qiáng)制走一遍「建連 → 寫(xiě)探針 → 刪探針 → 斷開(kāi)」的預(yù)檢寧可讓用戶(hù)一進(jìn)來(lái)就看到紅字也不讓他在點(diǎn)了上傳之后對(duì)著進(jìn)度條猜。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
色嗨嗨在线| 黑人精品XXX一区一二区| 无套内射性感少妇视频| 国产精品丝袜久久亚洲不卡| 夜夜一区二区| 日韩不卡a级视频专区| 欧美综合综合| 天天色怡春院| 大香蕉97久久| 久久婷婷影院| 欧美gv在线观看| 9999久久久久| 99热99re超碰精品| 芊芊操逼视频无码| 少妇久久久久久| 天美传媒av在线| baisiav| 国产精品点击进入在线影院| 91第一页| 亚洲成人妻日韩在线| 国产精品久久久久久久久AV大片| 1000部熟女视频在线观看| 久久女女| 日韩不卡一二三四| 一区中文字幕二区日韩| 高清无码网址| 爱我干综合| 国产欧美精选自拍一区| 91肉片| 国产2.3.4区| 日本熟妇精品九九| 综合网欧| 综合久欧洲| 91操人视频| 欧亚性爱视频免费看| 三级AV入口| 白嫩少妇| 久热伊人| 极品出轨视频网站| 99re6在线视频播放免费精品| 亚洲色性情三级| 九九精品美女高溯喷水| 99在线免费观看| 日本在线视频导航| 亚洲最大网站av| 色欲日韩欧美在线一区| 婷婷丁香在线| 超碰97起碰| 97WW精品| 欧插网站| 亚洲中文字幕妇伦久久| 亚洲不卡av在线| 成人老鸭窝人人在线视频| 欧美精品99久久久| 亚洲精品一区中文字幕乱码| 久久综合99| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 久久天堂婷婷网| 色五月网址| 国产男女无套视频免费观看| 校园春色五月天| 按摩中文字幕| 色 亚洲 91| 一区二区视频你懂的| 超碰97综合网| 玖玖爱在线视频免费观看| 欧美高清18A片| 国产精品久久久久久无码红治院| 国产美女高潮叫床视频| 午夜男人天堂| 欧美与日韩97| 麻豆久久精品亚洲精品88| 国产高清精品一区二区三区毛片| 天天操天天射天天日| 粉嫩av一区二区三区天美传媒 | 韩国成人精品久久久免费看| 一区二区激情国产熟女| 亚洲熟女乱色| 中文字幕十五区| 亚洲亚洲亚洲天堂天堂| 免费日韩黄片| 色婷婷电影网| 日日干男人的天堂| 激情熟女12P| 丁香婷婷大香蕉| 蜜臀AV成人精品蜜臀| 夜夜骑日日| 浓厚中出中文字幕在线| 人妻激情偷乱视频一区二区三区| 九九久久一区二区三区| 神马久久免费电影观看| 国产精品毛片?v一区二区三区 | 中日韓欧美高清| 嫖老熟女A片一二三区| 午夜久久一区二区无码中出| 夜夜精品视频| 欧美亚洲综合色| 99久久9| 亚洲风情在线观看| 农村妇女一级二级三级视频| 欧美亚洲丝袜人妻制服中文99| 亚洲精品无码成人久久久99| 啊a一区在线| 9999久久久| 久久天天性久久伊人| 2019亚洲男人天堂| 强奸国产精品视频| 亚洲欧洲无码一区夜| 青娱乐91| 国产剧情一区在线观看| 久久久免费视频18| 久久‘黄片视频| 久操影视| 国产精点久久久成人| 欧洲精品久久| 404操逼福利视频| 欧美一二级| 亚欧无码在线| 丝袜美腿丝袜| 色色色网站| aV中亚| 99国产人成精品| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 十八禁av无码免费网站APP| 97精品国产手机| 99re公开精品免费视频| 少妇色欲综合网2| 激情五月天综合网| 欧美日韩夜夜| 试看日韩黄片| 中文高清一区二区的| 偷拍精品一区二区三区| 另类亚洲图色| 热九九精品| 九九综合九九综合| 91成人国产综合久久精品蜜月| 国内偷拍精品一区二区| 狠操91,com| 十八禁成人网站在线观看| 欧美春色| 美日韩在线不卡人妻| 97超视频在线观看| 人妻人久久精品中文字幕| 在线啊啊啊啊| 国产丝袜啪啪| 欧美亚洲宗合色性图| 大香蕉520| 欧美精品精品一区二区| 成人九九| 亚洲国产精品久久久久久久久久| 麻豆这里只有精品| 青青草黑寡妇男人天堂| 99色婷婷| 婷婷伊人网| 被男人吃奶很爽的毛片| 熟妇乱伦一区二区| 啊啊啊好大好深| 91被操| 成年人免费观看网站| 国产精品午夜成人福利| 国产第12页| 精品四五区| 黄页视频网站野外| 91亚洲欧美| 超碰97久| 欧美宗合网| 黄久久| 91成人久久| 欧美香蕉视xxx| 久久人人妻| 无码99| 十八岁啪啪视频免费看| 日韩熟女操逼| 内射小黄片| 三男一女不戴套的A片| 国产AV线| 久久久啊啊啊| 91色香| 日本不卡二区| 黄色无码高清黄色无码网站| av影片在线观看不卡| 亚洲欧洲自拍| 欧美大香蕉久| 國產尤物AV尤物在線觀看| 天天视频综合在线观看视频| 国产三级电影免费观看| 狠狠色丁香| 国产自偷自拍一区| 精品十八在线观看| 色色九区| AV一区观看| 中文字幕免费看大片| 国产AAAAAABBBBB| 欧美综合国产精品久久丁香| 亚洲第一黄色av网站| 成人性爱美曰韩| 自拍偷拍亚洲熟女妇人精品 | 亚洲色图欧美色图另类图片| 久久这里只精品免费福利| 大学生口爆吞精| 家庭乱伦网站国产| 精品国产乱码久久久久久影片| 日本一二区免费| 国产黄a三级三级三级av在线看| 亚洲国产精品久久久久婷婷青年| 99精品人人爽| 日本女人久久久| 国产精品探花色| av资源在线播放天堂| www.av在线视频| 色婷婷影院| 一区二区三区蜜桃成人撸久久东京热 | 欧美草草| 精品欧美老熟女一二区| 欧美极度丰满熟妇hd| 国产精品熟女AV中文字幕在线播放| a亚洲欧美色欲| 亚洲一曲日韩精品| 日韩偷拍色图| 啊啊啊好大好深| 少妇高潮流水av免费| 色综合色| 色欧洲97| 男人天堂2019| 亚欧视频在线| 91人妻人人妻| 美女主播色欲91抠b在线播放| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 人妻超碰青青草98| 最近的最新的中文字幕视频| 国产福利精品98视频| 91蜜臀在线久久久久| a亚洲欧美色欲| 亚洲偷拍欧美激情| 超碰 97国产熟女| 久草精品国产99| 色综合20p| 91中出在线| 久久精品欧美一区二区三区不卡| 91色宗合| 91亚州| 乱伦av国产| 国产极品久久久| 操逼逼一区视频| 18禁看网站一区| 免费亚洲黄色视频在线观看| 亚洲天堂一区二区久久| 国产精品久久久视频| 亚州性9| 亚欧毛片基地国产毛片基地| 亚洲色图加勒比| 国产区日韩区在线观看| 91网18| 国产三级在线现体验区| 丁香六月啪啪| 色综91| 日韩欧美视频青青| 91人妻少妇| 人人操AV| 精品国模无码| 国产不卡中文字幕免费avi| 国产精品成久久久久午夜午夜| 91在线页| 日本熟女免费視颖| 久久久久久免费电影| 翔田千里av一区二区三区| 日夜伊人网| 1区2区3区在线视频| 色欲天天婬色婬香WWW夜色| 中文有码第五页| 亚洲精品毛片在线观看| 久热99999| 精品超碰中文在线| 亚洲精品性爱片| 亚洲色图日韩丝袜制服一区二区五月在线| 麻豆60秒| 国产成年免费大片黄在线观看| 亚洲精品97p| 久久人| 男生女生啊啊啊啊| 热九九精品| 国产精品白丝在线播放| 亚洲图片偷拍欧美| 日韩激情视频| 91久久久久免| 国产操偷| 免费观看网黄| 久久99国产精品| 丝袜色综合| 天美国产三级传媒| 国产一区二区视频在线播放| 中文字幕在线免费观看2| 97超碰伊人| 亚州色图狠狠干| 人妻少妇久久久| 日韩丰满熟妇| 青娱乐福利99| 精…码一二三区| 日韩97精| 97免费视频在线观看视频| 色五月婷婷网| 九九久久99| 久久av一级av少妇av高潮| 精品视频一区二区| 久久久久久久| 中文字幕黄色一起草| 97视频在线视频| 97玖玖超碰| 精品久久在线区一区| 大香蕉九九| 91三级理论片播放器| 成人免费性爱视视| 男女猛烈无遮掩视频免费软件| 精品97久久| 校园春色美腿丝袜 | 一级久久久久久久久久久| 免费看黄片现成| 亚洲素人综合| 欧美色老汉| 五十路熟女工口| 色狠人在线99| 91色综合激情| 伊人国产视频| 亚洲欧美在线综合| 天天日骚逼熟女| 色婷婷A V一二三四区麻豆综合| 九一综合网| 亚洲精品一区二区免费在线观看| 精品乱码久久久久| 超碰欧美97资源| 懂色影视久久| 日韩pv中文| 国产 v乱码一区二| 欧美性爱网97| 东北女人的毛片| 色噜噜人妻av中文字幕| 日日爱99| 久久婷婷精品| 日韩专区久久久| 国产亚洲精品农村妇女| 男人天堂久久日韩| 男人天堂东京热| 亚洲日本韩国在线| 老熟妇一区二区三区| 一区二区三区探花在线观看| 欧美一区二区日韩三区| 蜜臀一区二区三区在线| 久久岛国| 亚洲天堂一区二区| 天天肏视频| 黄片www视频免费| 久久性爱精品一区| 隔壁邻居波多野结衣中文字幕| 日本久久女同性恋视频| 久久在线观看免费视频| 黄色毛片A片| 秋霞视频一区二区| 91ise欧美| 玖玖综合色| 操死我了嗯嗯嗯| 日本东京热加勒比久久| www.yeyecao| 97超碰护士| 久久这里只精品免费福利| 日本视频在线中文字幕| 精品久久久久久中文| 色香欲综合| 黑人娇小av在线播放| 天综合网| 国产精品一二三区18| 和协无码影院| 亚洲欧美综合区自拍另类| 少妇高潮99p| 深夜福利黄片| 最新中文字幕av| 国产精品永久免费10000| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 再深点灬舒服灬太大了添视频| 97硬碰| 国内偷拍精品一区二区| WWW.加勒比人妻一区不卡.com| 国产aⅴ无码片毛片一级网站| 97超碰超欧美。| 久久AV无码网址| 久久久一二三四区| 精品视频久久久久九九九九9999| 日日超碰亚洲| 欧美国产一区二区三区麻豆传媒| 黑人精品一区二区在线播放| 加勒比伊人综合| 中文字幕一区二区三区视频播放| 91热| 九九九久千久久激情蜜桃在线看 | 青青草中出视频 | 97看操| 九色 人妻 大香蕉| 成人一级二级| 久9久9精品| 国产性感骚丝袜在线| 免费黄色视频网址| 视频国产精品未满十八禁止在线观看| 麻豆成人AV| 天天日老熟妇| 乱伦av.com| 亚洲不卡三级手机播放| 熟女高潮合集-永久久久-成人AV| 婷婷伊人| 久久亚洲AV无码专区国产精品| 人妻激情视频| 蜜乳AV网址| 熟妇熟女亚洲天堂网| 大香蕉中文201| 青青色综合| 黄色一级视| 女色综合| 中国黑人三级片网站上区| av凤凰久久久| 国产日韩精品suv| 一本大道久| 亚洲.欧美.丝袜.中文.综合| 国产区91柔拿会所技师| 欧美写真视频一区| 国产高清精品一区二区三区毛片| 久久精品国产亚洲AV先锋| 99热导航| 岛国人妻少妇av在线观看| 野狼激情网| 亚洲美女自拍偷拍视频| 国产在线激情视频| 欧美黄片视频在线观看免费| xxx0国产在线播放| 伊人久操| 免费视频观看60秒| 欧美日韩97在线| 蜜桃AV天堂| 激情综合av| 欧美熟女丝袜| 亚洲蜜臀精品视频久久| 9I1性色影院| 久久午夜色播影院免费高清| 91搡老女人老妇女老熟女歌词翻译| 伊人加勒比| 日本操逼视频在线| 国产13区| 混色激情av| h在线看免费版在线看| 18禁网站在线播放| 1024亚洲中文字幕久在线看片你懂的 | 亚洲天堂资源在线| 亚洲色图综合| 五十路熟女在线不卡观看一区二区| 亚洲欧洲自拍图片专区满春格| 射久久| 97久久综合网| 欧美综合色| 久久久天美| 欧美玖玖爱免费玖玖| 亚洲网污污污污| 加勒比海成人视频网| 国产又大又粗又长视频在线| 白丝jkav| 美国久久一二三四| 91中文精品日韩欧美在线| 91狠狠色丁香婷婷综合久久| 狠狠操夜夜操蜜桃视频三区| 国产999精品久久久久久| 99色热| 黑丝少妇在线观看| 夜夜嗨一区二区| 99这里都是精品| 久久久人体| 久久久久久久极品香蕉视频| 啊好爽受不了无码| 超碰97最新人妻| 欧洲与亚洲欧美精品中文字幕| 91久久18禁| 日本大香蕉| 操逼视频亚洲| 亚洲天堂无码| 日日爽夜夜爽| 色月天AV导航| 校园春色亚洲欧洲| 九一精品牛牛一区二区| 久久人妻无码毛片A片麻豆| 久久人体一区二区| 青青青青青手机视频| 加勒比综合网| 日本性爱欧美性爱| 免费看欧美美女黄色大片| 色色色色综合网| 日韩人妻大香蕉| 69AV女优男人的天堂| 超碰97最新人妻| 欧美一区二区三熟女剧情| 欧美高清91| 黄色视频高清无码网站| 又粗又长又爽在线观看| 久久精品国产免费观看99| 啊啊啊不要好疼视频| 欧美 青青草| 亚洲欧美综合网站| 欲香欲色综合天天伊人| 国内精品a| 中国东北熟女老太婆内谢| 国产亚洲色婷婷久久99精品91| 丁香六月婷婷久久综合| 日本三级韩国三级99| 人人做天天爱| 亚洲高清91| 国产精品香蕉| 无码人妻精品一区二区中文| www欧美性爱| 综合网,亚洲,欧美| 欧美 日韩 婷婷 五月| 97资源亚洲| 午夜福利1区2区3区| 8050无码八戒| 免费看污网站| 中文字幕二区| yaouchengrenav| 去干网最新版| 中 文字幕一区二区三四 五 区日 日 骚 | 精品在线蜜臀| 欧美系列在线一区二区| 麻豆亚洲Av成人无码一区精品| 亚码人妻| 国产60页| 五月天玖玖资源站| 欧美色66| 男人天堂网手机版婷婷| 亚洲av性爱电影| 丁香婷婷九月| 日韩av色图综合| 久草看看看| 久草国产在线视频| 99国产精品在线观看| nuu12国产麻豆精品| 欧美呦呦性爱| 男人的天堂2010| 在线小视频| 久久久新亚洲AV| 日本三级R| 天天插夜夜爽| 中文AV制服乱伦| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 久久久久久久 九九九九九九九| 日韩精品影视| 国产精品亚洲色婷婷久久久| 2020中文字幕| 久久精品六区| 夜间福利片1000无码| 操操操操操操| 精品国产一区二区久久| 精品无人区麻豆乱码1区2区图片| 久久综合国产精品国产| 91在线免费观看处女| 日日夜夜骑| 欧美网站免费| 久久免费老司机精品| 97欧美日韩精品| av在线免费一区二区| 99999精品成人| 久久女人| 精品久久99| 欧美日韩人妻精品一区二区三区| www黄片免费看com| 久久综合精品一区二区三区| 久久久久久九九九| 国产成人精品日本视频| 亚洲情色在线| 无码137片内射在线影院| 精品少妇后入一区二区三区四区人妻巨乳 | 亚洲女优有码无码高清| 国产美女高潮叫床视频| 伦理日韩国产久久| 911av网站免费观看| 欧美日韩国产男人| 在线无码视频| 天天综合网1| 国产隔壁老王影院在线| 97中文字幕色| 日韩欧美大力操| 日韩av色图综合| 眼镜人妻101.com| 75大香蕉| 亚洲,日韩,欧美,成人播放| 天天享受天天看| 日韩操逼性鲍| 和协影院中文字幕三区| 日韩无码三级影院| 欧美亚洲成人在线一区二区三区| 在线综合色| 一区二区三区在线日韩影院观看| 小情侣高清国产在线视频| 久草成人影片| 极品极品色影院| 精产品久久| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 国产97在线 | 亚洲| 开心五月婷婷| 黄色大片视频在线免费看| 啊啊啊com| A级国产欧美激情在线| 久久久久久久久久久久黄色| 亚洲精品毛片在线观看| 九九超碰综合网| 在线另类| 极品国产内射| 三上制服丝AV| 欧美性爱三区二区| a啊啊啊啊啊啊啊啊一区二区| 91久久久久久久| 97在线视频免费观看| 偷拍 精品 另类 四区| 国产黄色在线播放观看| 97bbn| 91人妻Pr| 探花精品 一区二区| 国产丰满熟夫69mpp| 国产精品久久久久久久黄无码| 欧美 综合 亚洲| 日本在线不卡一二区| 亚洲开心网| 人人澡综合涩| 色婷亚洲五月在线观看| yiqicaoav| 久久精品国产亚洲AV片多多| 欧美激情高清性猛交| 毛片17S| 日本精品无码三级网站| 视频二区美腿制服人妻欧美| 午夜久久一区二区无码中出| 青娱乐国产盛宴视频| 国产自啪精品视频网站黑丝| 夜夜中出国产| 乱伦1色页| 操熟女91| 中国小夫妻勾搭露脸淫荡对白 | 啪啪91| 99re公开精品免费视频| 啊啊啊好大好深| 日韩AV色图| 性色av婷婷久久一区二区点复制| 97亚洲综合影院| 老女人91| 日韩精品三区四区| 蜜臀AV网站| 少妇久久久久久| Aa东京男人的天堂| 无码一区二区三区四区五区六区七区八区九区十区视频 | 97在线观看免费视频| 人妻黑丝袜电影| 91大胆欧美| 人妻人人做人人澡人人爽欧美一区| 亚州综合色| 人妻大香蕉| 91 丝袜在线| 婷婷色中文字幕| 亚洲一区二区三区播放在线| 亚洲熟女综合网| 少妇内射视频| 曰本精品久久久| 99操| 日本激情免费大片| 中文字幕丰满人妻日本| 亚洲一区制服诱惑| 啊啊啊啊啊在线视频| 国产av尤物| 99热只有这里有精品| 久久精品国产AV一区二区三区| 男人的天堂1024| 操一区| 久久大香蕉手机高清| 乱伦熟女区| 亚洲乱伦图片视频| 亚洲日韩av专区无码| 天天天干977| 亚洲精品1区| 中文字日本乱码| 啊啊啊啊嗯嗯嗯用力好爽 | 亚洲欧美97√| 欧美亚洲涩涩| 久久只有精品一区二区三区| 午夜精品久久久久久久男人的天堂| 手机看av网站在线看| 亚洲免费成人在线高清无码视频| 青娱乐休闲视频在线观看| 强乱老妇中文字幕| 美女丝袜激情小说| 97爱b| 国产亚卅97| 欧美中文字幕男人天堂久久精品| 六月激情婷婷| av天堂5| 天天操天天干一区二区| 色吧 综合| 啊啊啊好多水| 久久久久九九九| 久久这里只| 久久久久久久9999| 亚洲天天自拍| 9九九国产| 51一区二区三区| 亚洲色图第四色| 人人射人人操人人摸| 中日亚韩免费视频| 强奸乱伦亚洲第一页| 操操逼视频| 无码免费在线观看黄色片| 美国日韩黄片| 秋霞操逼片| 日韩99精品视频综合区| 国产多人在线观看视频| 内射小黄片| 少妇高潮流水av免费| 乱伦一二三区| 亚洲精品人妻在线| 91爆操视频| 日韩欧美亚洲一区二区三区影院| 可能人人看人人摸| 欧美亚洲另类在线蜜桃| 午夜无码精品免费看性色| 激情小说成人日本无码一| 精品一区二区综合熟妇| 五月丁香社区婷婷日韩欧美精品影院 | 久久九九视频九九视频| 操逼操逼逼操操逼91| 亚洲成a人在线观看久| 人人做人人妻人人夜视频| 欧美性爱精品一区二区| 五月丁香综合啪啪| 91国产精品在线看| 久久久久性熟视频| 亚洲熟女综合| 中文字幕久久亚州无码| 91精品婷婷国产综合久久| 97超碰超欧美。| 91超碰在线观看| 91久久国产精品| 精品熟女呻吟久久91| 日本操逼视频在线| 国产人伦a片信息免费片| 亚洲欧美日韩夜夜| 天天插天天插| 第45页一区二区| 日韩不卡网操逼中文字幕日韩| 看看日B真人视频| 91老妇女| 日韩免费a级毛片无码a∨| 亚洲密乳AV| 欧美经典一区二区三区| 插欧洲美女欧美精品| 激情综合网激情五月天| 亚州成人a∨| 亚洲综合一| 美女t无毒不卡不卡| 明星性猛交ⅹxxx乱大交| 日逼视频日本| 97婷婷色| 欧美久久久15P| 少妇熟女视频一二三区| 久草在线| 久久社区一区二区三区| 国产精品大香蕉| 欧美白嫩女HD| 欧洲精品久久| 深夜视频| 亚洲中文字幕久久人妻| 91大学精品激情戏| 欧美综合在线91| 久久香蕉国产线看观看亚洲女人 | 亚洲黄网在哪免费看| 青青草视频这里只有精品| 亚州色图欧美| 噜噜噜噜久久久精品免费| 久久精品福利影院| 亚洲日韩成人性爱视频| 午夜天天碰综合视频| 日日日大屁股骚女人精品| 久9九综合在线| 无码高清操逼网址| 五月丁香六月激情综合| 蜜臀久久久国产| 资源新线在线天堂| 婷婷去俺也去六月色| 在线 制服丝袜中出 人妻| 久久久国产精品人妻丝袜| 97鸡把在线视频| 国产成年精品高清在线观看91| 大香蕉手机视频| 97精品综合久久网| 91另类| 中国一区二区亚洲人妻| 亚洲最大的黄色电影网站。| 熟妇人妻一二三区免费| 欧美综合传媒| 亚洲巨爆乳一区二区三区四季网| 色婷网| 91丝袜激情在线| 色香综合| 国产精品久久久久久久久AV大片 | 区日韩亚洲乱码av电影| 亚洲怡春院| 第四色奇米影视777| 亚洲第一页色| 欧美天天影院| 国产精品69人妻无码久久久| 歐美一級亂黃99在綫精品| av2014 日韩在线中文字幕| 精品欧美А∨无码黑人大荫蒂| 国内精品999| 婷婷10月天青娱乐| a v网站在线播放| 亚洲永久永久永久永久一级一级一级精品| 天堂综合网| 秋霞曰韩R级| 足交视频老司机| 亚洲欧美精品国产一区二区| 欧美制服另类丝袜| 狠狠爱夜夜| www色色色com| 精国久久一区二区三区98| 欧洲在线性爱视频| 久久久一级| 精品人妻一区二区三区四区| 亚洲成人av电影在线| 色狠人在线99| 日本色色色网站免费看不卡| 亚洲综合五月天婷婷丁香| 日本在线15p| 欧美三级中文字幕hd| 国产精品丝袜久久亚洲不卡| 91成人18| 激激五月| 97超碰色色| 中文字幕在线24| 春色91| 高清无码国产亚洲| 欧美少妇高潮视频| 国产AV超爽| 99re6国产精品99re| 一区操逼| 大香蕉欧美日韩| 欧美性爱18观看| 91天堂视频| {男男暴菊gay无套网站| 美女裸体麻豆天美蜜桃91| 国产午夜福利专区综合| 三级片大波波| 日本成人免费一区二区三区| 欧美一区二区三区大综合| 97亚洲欧美| 91老司机在线视频免费观看| 97无码视频在线播放| 欧美三级免费伊人| 大香蕉免费3| 欧美在线啊啊啊| 精品人妻中文字幕4399| 四虎免费看黄| 亚洲无吗在线视频| 后入式五六区| 大香蕉丝袜一级片| 东北女人高潮视频| 久久久一级| 日本影视久久免费| 激情综合av| 免费在线黄片视频| 草B在线| 亚洲丁香花色| 搡老女人老熟女91老熟女综合网| 91oumei| 人妻精品视频一区二区三区| 亚洲成人精品久久久| 2020中文在线一区二区三区| 区自美91| 最新日韩黄片| WWW美腿丝袜香蕉中文| 九九色热| 亚洲伊人成综合成人网| 91五月天| 婷婷AV一区二区三区| 99热18这里只有精品| 操我无码| 亚洲视频精选| 成人老鸭窝人人在线视频| 日本免费专区| 后入日本1234| julia高潮后不停追击中出| 人人摸人人入| 国产第二页| 五月丁香六月| 国产精品爱欲| 2020中文字幕在线| 看看小穴| 最近2018中文字幕在线高清第一页| 天堂伊人久久| 日韩啪啪网| 欧美日韩大香蕉| 91 国产丝袜在线播放-百度| 蜜桃久久一区二区三区| 手机在线免费看的av| 美国三级日本三级久久99| 超碰狠狠操| 成人性爱免费播放| 尤物视频新赏网鲜网色诱网| 99这里有精品视频| 九九精品无码专区免费| 精品一二三区女同| 欧洲色色| 亚洲?V无码专区在线电影| 亚洲猛交| 天天α片| 婷婷尹人大香蕉免费| 99re免费视频精品全部| www. 男人天堂成人在线| 国产 日韩 欧美 人妻 熟女 中文| 永久免费av无码网站国产app| 99在线精品观看视频中文| 亚洲天堂综合AV| 日va操| 啊啊啊想要| 日本久久综合| 校园春色 男人天堂 | 亚洲色图久久成人| 日韩A优精品在线观看| 精品人妻av区天天看片| 蜜桃臀一区二区aV| av大香蕉网站| 99爱精品| 欧美另类综合久久| 粉嫩av在线| 日日骚av| 天天天天做夜夜夜夜做| 亚洲日本成人动漫| 51久久夜色精品国产麻豆| 91色欧美| 天天操天天日天天干| 91亚洲黑人| 凸凹视频在线观看| 看大黄色大片原件| 少妇久久| 综合五月天| 国产日韩欧美| 亚洲综合性感在线| 亚洲日韩一区电影| 国产成人无码久久精品| 国产女人和拘做爰视频 | 伊人黄色片| 99re这里只有精品9| 无码九九九九| 97国产色图 | 嗯嗯啊啊好疼| 乱日视频| 日日干夜夜干| 日韩av在线播放不卡| 性色生活片久久毛片婬片免费放女人一级毛片 | 综合久久久久久久久91| 国产免费内射视频| 二三四区精品| 欧美 综合| 看黑人AV不卡| 中文字幕大片三级狠狠干| 色综合婷婷| 美女黄频a美女大全免费皮| 亚洲欧洲日韩天堂av| 美女天天干| 校园春色 欧美| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 岛国精品视频在线观看| 九九综合久久| 无遮挡猛进视频免费无限观看| 26uuu国产免费观看| 操逼网免费无码视频| 亚洲精品a人片在线观看视| 欧美人妻久久精品二区三区| 国产精品久久久久中文字幕| 男女激情黄色网址| 免费操逼视频下载| 国产精品99久久久www| 亚洲精品亚洲人成在线麻豆| 视频黄色国产一级| 国产精品视频麻豆入口| 日韩精品色呦呦| 岛国福利在线精品播放| 日本性感人妻91| 操逼无码操逼| 牛牛操视频逼| 日韩综合成人免费视频| 91色交| 青娱乐淫乱1314| 亚州综合在线| dy888午夜老子影视达达兔| 3PAV乱伦视频| 色网色网色网色网色网色| 97爱综合| 国产亚洲99久久精品熟| 自拍偷拍 日韩欧美| AV麻豆免费一区| 成人无码在线超碰网| ji熟女.com| 日韩在线一区高清在线| 成人麻豆av电影网站| 亚洲精品官网在线观看| 国产精品久久久久久片| 91碰超| 强奸乱伦av电影| 强奸乱伦亚洲第一页| 无码精品人妻一区二区三区妖精| 玖玖玖玖精品国产剧情| 日本3级一区二区免费| 五月丁香六月激情综合| 91大胆欧美| 超碰午夜在线| 一区二区不卡| 婷婷九月国产| 东京热,男人的天堂| 免费a v| 亚洲AV秘 精品久久老牛影视| 亚洲国产无码精品首页久久久| 日韩乱码Av| 99www.bibizy香蕉资源国产一区二区三区高清| 久久婷婷欧美| 久久精品超碰| 国产久久免费精品视频| 偷拍自拍在线视频观看| av天堂影视中文在字幕在线中文| 色综合加勒比四四季| 亚洲涩图欧美| 色逼综合| 久久国产乱子伦精品免费女人| 日韩午夜啪啪视频| 亚洲综合网图| 欧美后入式| 亚洲91在线| 午夜福利一区二区影院| 999国产精品999| 欧美色图片91| 亚洲精品97p| 韩国一级做a久久久久| 久久久久久国产无码精品| 女优视频第10页| 亚洲天堂第一页| 国产精品另类一区大香蕉| 亚洲精品国语在线播放| 熟女字幕| 亚洲日本韩国极品一区二区| 亚州高清色综合| juliaann丝袜| 26UUU欧美激情一区二区| 五月开心网| 中国熟女91| 丰满熟女一区二区三区在线播放| 久久久久久国产手机AV| 奸色色 男人天堂 天天射| 91熟女.com| 欧美色宗合| 99热只有这里有精品| 另类av天堂| 99精品九九九九九九| 亚洲精品一二区| 久久久久精| 日本999精品| 青草综合| 亚洲精品日韩国产欧美| 热久久九九热| 操熟女91| 日韩人妻中文视频| 久久婷婷在线观看视频| 欧美性第1页| 黄色电影观看久久9| 欧美激情视频一区二区三区不卡| 天天操天天干美女网址导航| 免费av在线播放二区| 午夜精品久久久久久久男人的天堂 | 国产熟女乱论| 九九九网页| 怡红院成人视频| wwwcaobibi| 九九拍拍精品视频在线播放| 97免费在线| 婷婷综合视频| 中文字幕熟女人妻丝袜丝| 国内精品a| 久久久久久夜夜夜夜夜| 青青青在线高清视频在线一二三四区| 久操凹凸视频| 久草精品国产蜜臀| 中文字幕丰满人妻日本| 久久人妻办公室视频| 久久久久人| 免费的很黄很污的全部视频| 中文字幕少妇色| 91欧| 天天看,天天做| 五月天欧美色图| 久久毛卡| 欧美大香蕉97| 国产无码精品久久久久久| 亚洲色图久久成人| 亚洲一区二区AV| 91精品国产麻豆国产自产在| WWW美腿丝袜香蕉中文| 亚洲暴力强奸AV| 日韩美女久久一区二区三区| 性色综合网| 啊啊啊啊啊啊在线| 亚洲1区| 久久↗↗| 久久精品国产亚洲AV片多多 | 精品人妻一区二区免费看| 国产精品自在线发布| 啊啊啊啊啊啊啊啊要喷了| 操操操日本的逼| 97超碰久| 亚洲欧洲综合av在线| 超碰中文字幕人妻草一区| 欧美不卡在线一区二区| 美女黄页| 久久久新亚洲AV| 97视频观看| 插入逼91| 97爱免费插| 一区在线精品中文字幕| 亚洲欧洲小说图片视频| 日韩三级伊人| 91人妻人人妻| 九九碰九九爱97超| 91女神在线视频| 国产精品久久久999| 好吊色一区| 国产在线视频午夜精华在| 欧美日韩国产中文精品字幕自在自线,| 欧美综合另类| 日韩内射视频| 日韩av性爱在线播放| 色女综合| 国产Av超碰| 日韩美女久久一区二区三区| 亚洲国产一级黄色视频| 日韩中文字幕av在线播放| 岛国大片在线观看网站入口| 中文字幕文字幕无码一区二区三区电影99| 国产精品一级特黄aaa大片在线观看| 亚洲精品97中文字幕| 亚洲偷拍自拍在线视频| 91美女视频直播| 久久久精品国产亚洲伊人| 亚洲巨爆乳一区二区三区四季网| 97视频620| 亚洲一曲日韩精品| 97chaopenrihan| 一区二区日韩欧美久久| 搡老女人911熟妇老熟女| 亚洲精品天天影视综合网 | 中文字幕jul-617人妻熟女| 啊啊啊啊无码| 天天综合精品| 日本操逼aaaaa| 九九九九97| 五月丁香啪啪啪|