web服务器访问远程主机文件问题

本文介绍了一种通过Web程序远程操作另一台机器上文件的方法。起初因权限问题无法直接访问目标文件,通过建立连接的方式成功实现了远程文件的访问及操作。文章提供了具体的C#代码示例,包括Ping远程主机及建立Net连接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  正在开发的项目中有这样的需求,就是web服务器上通过web程序去操作另一台机器上的文件,进行加工并返回值。开始的时候直接用绝对路径进行访问老是访 问不到,一直认为是权限的问题(其实感觉的确是权限的原因),然后把目标文件夹的权限全部放开进行访问,但是还是不可以。根本就访问不到目标路径,所以也 根本不可能操作目标路径下的文件。后来在msdn上找到这段代码,在程序中和目标服务器建立了一个连接,果然好用了。但是按照程序中直接进行net连接却 不好用。不知道为什么?特此也贴出代码来和大家讨论一下:

 1public static bool Ping(string remoteHost)
 2ExpandedBlockStart.gifContractedBlock.gif{
 3    bool Flag = false;
 4    Process proc = new Process();
 5    try
 6ExpandedSubBlockStart.gifContractedSubBlock.gif    {
 7        proc.StartInfo.FileName = "cmd.exe";
 8        proc.StartInfo.UseShellExecute = false;
 9        proc.StartInfo.RedirectStandardInput = true;
10        proc.StartInfo.RedirectStandardOutput = true;
11        proc.StartInfo.RedirectStandardError = true;
12        proc.StartInfo.CreateNoWindow = true;
13        proc.Start();
14        string dosLine = @"ping   -n   1   " + remoteHost;
15        proc.StandardInput.WriteLine(dosLine);
16        proc.StandardInput.WriteLine("exit");
17        while (proc.HasExited == false)
18ExpandedSubBlockStart.gifContractedSubBlock.gif        {
19            proc.WaitForExit(500);
20        }

21        string pingResult = proc.StandardOutput.ReadToEnd();
22        if (pingResult.IndexOf("(0% loss)"!= -1)
23ExpandedSubBlockStart.gifContractedSubBlock.gif        {
24            Flag = true;
25        }

26        proc.StandardOutput.Close();
27    }

28    catch (Exception ex)
29ExpandedSubBlockStart.gifContractedSubBlock.gif    {
30        //eat   it  
31    }

32    finally
33ExpandedSubBlockStart.gifContractedSubBlock.gif    {
34        try
35ExpandedSubBlockStart.gifContractedSubBlock.gif        {
36            proc.Close();
37            proc.Dispose();
38        }

39        catch
40ExpandedSubBlockStart.gifContractedSubBlock.gif        {
41        }

42    }

43    return Flag;
44}

45public static bool Connect(string remoteHost, string userName, string passWord)
46ExpandedBlockStart.gifContractedBlock.gif{
47    if (!Ping(remoteHost))
48ExpandedSubBlockStart.gifContractedSubBlock.gif    {
49        return false;
50    }

51    bool Flag = true;
52    Process proc = new Process();
53    try
54ExpandedSubBlockStart.gifContractedSubBlock.gif    {
55        proc.StartInfo.FileName = "cmd.exe";
56        proc.StartInfo.UseShellExecute = false;
57        proc.StartInfo.RedirectStandardInput = true;
58        proc.StartInfo.RedirectStandardOutput = true;
59        proc.StartInfo.RedirectStandardError = true;
60        proc.StartInfo.CreateNoWindow = true;
61        proc.Start();
62        string dosLine = @"net   use   \\" + remoteHost + "   " + passWord + "   " + "   /user:" + userName + ">NUL";
63        proc.StandardInput.WriteLine(dosLine);
64        proc.StandardInput.WriteLine("exit");
65        while (proc.HasExited == false)
66ExpandedSubBlockStart.gifContractedSubBlock.gif        {
67            proc.WaitForExit(1000);
68        }

69        string errormsg = proc.StandardError.ReadToEnd();
70        if (errormsg != "")
71ExpandedSubBlockStart.gifContractedSubBlock.gif        {
72            Flag = false;
73        }

74        proc.StandardError.Close();
75    }

76    catch (Exception ex)
77ExpandedSubBlockStart.gifContractedSubBlock.gif    {
78        Flag = false;
79    }

80    finally
81ExpandedSubBlockStart.gifContractedSubBlock.gif    {
82        try
83ExpandedSubBlockStart.gifContractedSubBlock.gif        {
84            proc.Close();
85            proc.Dispose();
86        }

87        catch
88ExpandedSubBlockStart.gifContractedSubBlock.gif        {
89        }

90    }

91    return Flag;

92}

 

转载于:https://www.cnblogs.com/ratgtttjh/archive/2008/08/26/1276753.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值