从asp.netWeb应用程序打开本地系统上的文本文件发表评论后可以添加说明,其实我意识到我原来的问题很令人困惑。这就是我要实现的目标...这将是一个在本地Intranet而不是Internet上运行的Web应用程序。最后,我想从Web应用程序中打开一个网络文件夹位置。例如,Web应用程序在具有集合结构的文件服务器上创建文件夹,即:serverjobnumberexhibitreferenceimage1serverjobnumberexhibitreferenceimage2我希望用户能够导航到记录并单击链接以打开其匹配的文件夹位置。用户、网络服务器和文件服务器都在同一个域中。下面的代码只是一个例子,在我开始尝试远程文件夹之前尝试让我的文件/文件夹在我的本地机器上工作。我很欣赏这令人困惑。原始问题我创建了一个.Net/C#web应用程序,我想在指定位置打开一个文本文件。以下代码在IISExpress上运行时运行良好,但一旦发布到IIS就无法运行。目前IISExpress和IIS7正在我的本地计算机上运行。IIS应用程序池配置为在我的域帐户下运行(必须这样做,因为我们的SQL服务器存在双跳问题)到目前为止,我有以下代码:ProcessStartInfoprocessStartInfo=newProcessStartInfo();processStartInfo.WorkingDirectory=@"C:UserspcusstanceDesktop";processStartInfo.FileName=@"notepad.exe";processStartInfo.Arguments="test.txt";processStartInfo.WindowStyle=ProcessWindowStyle.Maximized;processStartInfo.CreateNoWindow=true;进程process=Process.Start(process)StartInf;通过任务管理器监控系统进程,可以看到“notepad.exe”进程创建成功,但是没有窗口打开。它说该进程在“pcusstance”帐户下运行,但我只有在任务管理器中选择“显示所有用户的进程”时才能看到它。Windows没有启动是因为它以某种方式在错误的帐户下运行吗?我也试过:Process.Start("C:UserspcusstanceDesktoptest.txt");和以前一样,这适用于IISExpress,但不适用于IIS7。任何帮助是极大的赞赏。解决方案目前,我不得不求助于使用支持使用本地链接的InternetExplorer。您可以使用以下方式将浏览器指向网络位置:file:///\serverfolderlocation或file://///server/folder/location您所有的代码都在asp.net中运行,它托管在服务器上(通过IIS).您编写的代码将在托管的asp.net应用程序的上下文中执行。使用visualstudio进行web开发时,“服务器”和“客户端”(即浏览器)通常是同一台计算机。代码在本地化开发服务器的上下文中执行。您的浏览器将向“该”服务器发出请求。因此,您必须编写让您感觉自己已经开始该过程的代码-notepad.exe您实际实现的内容通常不适用于Web应用程序。这甚至是不可行的。由于“服务器”和“客户端”现在是两台不同的机器。最接近满足此要求的方法是提供文件作为响应。对于最终用户,这相当于下载(在大多数情况下)。编辑:您的选项正在为您的代码中所示的文件提供服务:Response.ContentType="application/octet-stream";Response.AddHeader("Content-Disposition",_"attachment;filename="""&filename&"""");这将强制用户使用filename值指定的默认名称在客户端上下载filename。您实际上可以更改Content-Disposition部分以指示浏览器如何加载。但是,这取决于目标浏览器。这是一个小例子:FileStreamMyFileStream=newFileStream(@"d:inetpubwwwrootsmall.txt",FileMode.Open);长文件大小;FileSize=MyFileStream.Length;byte[]Buffer=newbyte[(int)FileSize];MyFileStream.Read(Buffer,0,(int)MyFileStream.Length);我的文件流.Close();Response.ContentType="文本/纯文本";Response.AddHeader("content-disposition","inline;filename=sample.txt");Response.BinaryWrite(缓冲区);你应该研究一些文章和实验。这里有一些入门链接:内容配置:“内联”和“附件”有什么区别?http://www.nullskull.com/articles/20011006.asphttp://www.windowsdevcenter.com/pub/a/dotnet/2002/04/01/asp.html你的问题的意图仍然不清楚。您是否...A.尝试从客户端浏览器连接到Web应用程序(由IIS托管)并从网络共享(相对于服务器)访问文件以供客户端使用?B.尝试从客户端浏览器连接到Web应用程序(由IIS托管),并让应用程序访问服务器使用的网络文件(如包含应用程序需要执行某些处理的信息的.txt文件)?C.尝试从客户端浏览器连接到Web应用程序(由IIS托管),并让托管应用程序从网络共享(相对于客户端)访问文件以供服务器使用?我的假设是您正在尝试(B),如果是这样,您应该使用System.IO并以编程方式访问您的文件,而不是尝试启动进程。下面更新如果您尝试连接到Web应用程序,并在客户端启动本地进程(例如notepad.exe),则无法通过启动进程来完成。否则MyVirus.com可能会在我的机器上启动本地进程,这将是一场噩梦。Web应用程序只会在服务器上启动一个进程,而不是客户端。您可以做的最好的事情是打开文件(从服务器)并将包含文件内容的响应发送回客户端,或者将路径和文件名发送到客户端并通过javascript或HTML5FileReader打开它。额外更新您应该能够从UNC路径打开图像(或浏览器中的任何其他内容),只要您的应用程序池身份具有权限并且您正在使用模拟(身份模拟=“真”用户名=“someaccount”password=""somepassword")?最后一次更新不幸的是,即使打开文件夹位置也需要启动本地进程(explorer.exe)。出于安全原因,这在现代浏览器中根本不会发生。你可以在每台检查数据库的客户端计算机上做一些类似于本地Windows服务的东西,如果它找到一个x,它会启动一个本地explorer.exe到存储在数据库中的路径......但它必须每次检查一次第二听起来很糟糕。除此之外,像这个文件浏览器控件或这个来自Telerik的文件视图控件可以满足您的需要。(免责声明,我对这些控件一无所知,只是认为它们可能有所帮助)。请参阅此页面http://msdn.microsoft.com/en-us/library/58wxa9w5(v=vs.100).aspx最重要的是在使用现有项目或旧版站点时使用这一行IIS(例如IIS6)是目标,测试环境是否与生产环境紧密匹配并不是很重要。此服务器选项是VisualStudio中的默认选项。但是,VisualStudio开发服务器在与完整IIS不同的安全上下文中运行,并且可能不会显示部署到IIS生产版本时可能发生的错误。问题是IISExpress和本地开发服务器正在您的安全上下文中运行。这使他们可以更自由地启动进程和访问本地系统上的文件。但是,IIS运行在更严格的安全上下文中,并且对手边机器的访问受到限制。想象一下,如果IIS可以执行您上面建议的操作。您基本上可以在Web服务器上运行任意代码。以上就是C#学习教程:从asp.netweb应用打开本地系统上的文本文件共享。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文来自网络收藏,不代表立场,如涉及侵权,请点击有权联系管理员删除。如需转载请注明出处:
