File.SaveAs停止工作:指定的网络名称不再可用

时间:2016-11-23 18:17:51

标签: c# asp.net-mvc iis-7.5 shared-directory

我一直使用以下代码将文件保存到本地共享目录很长时间了:

file.SaveAs("\\localhost\MySharedDirectory\MySubDirectory\File.docx");

今天,它停止工作并开始抛出错误:The specified network name is no longer available.我无法记住对我的项目或计算机进行任何可能导致此更改的更改。对于我可以检查以使其再次工作的事情有任何建议吗?

疑难解答详情

  • 我在IIS 7.5上运行的ASP.NET MVC网站上使用上述代码。我正在使用假冒和 确认模仿用户拥有(完全)权限, 还有目录。
  • SaveAs(...)文件路径字符串中,我尝试将localhost替换为MyMachineName127.0.0.1,并继续收到相同的错误。
  • 在Windows资源管理器中,如果我右键单击该目录并进入Properties > Sharing,则共享的Network Path名称为: \\MyMachineName\MySharedDirectory。如果我直接在Windows资源管理器中导航到此路径,则会得到与我的代码生成的错误相同的错误。 但是,如果我在Windows资源管理器中导航到\\MyMachineName,那么 共享正确显示为MySharedDirectory,但尝试访问它会产生相同的错误。
  • 在Windows资源管理器中浏览\\MyMachineName时,我的其他几个共享 正如预期的那样出现,但是当我尝试访问它们时它们都会产生相同的错误。
  • 我没有运行防火墙或防病毒软件。
  • Windows Update最近未运行或安装任何内容。

完整错误明细

消息

The specified network name is no longer available.

来源

mscorlib

堆栈跟踪

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode)
   at System.Web.HttpPostedFile.SaveAs(String filename)
   at System.Web.HttpPostedFileWrapper.SaveAs(String filename)
   at ****.Web.Areas.Services.Controllers.****Controller.Submit1(****ViewModel model, Nullable`1 captchaValid, String action) in C:\Projects\****\****\Controllers\****Controller.cs:line 883
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters)
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.<BeginInvokeSynchronousActionMethod>b__39(IAsyncResult asyncResult, ActionInvocation innerInvokeState)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResultBase`1.End()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult)
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d()
   at System.Web.Mvc.Async.AsyncControllerActionInvoker.AsyncInvocationWithFilters.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f()

1 个答案:

答案 0 :(得分:0)

我在事件查看器中发现了一个奇怪的Schannel错误,这让我想到要仔细检查我在我的机器上添加的最新网站的端口是否安全。事实证明它不是。我在端口445上运行它,它用于文件和打印机共享。我更改了端口,我可以再次访问共享。