C# 从asp.net应用程序访问网络共享。在VisualStudio中工作,但在IIS中不工作,为什么?

C# 从asp.net应用程序访问网络共享。在VisualStudio中工作,但在IIS中不工作,为什么?,c#,asp.net,smb,mojoportal,C#,Asp.net,Smb,Mojoportal,我在内部网中有一个网络共享,允许每个人(来宾)进行写访问 因此,我用c语言编写了一个程序(mojoportal模块,无论如何,我认为也是一样的),它在该路径中编写了一些文件,在visual studio中工作得非常好 现在,在IIS 7.5中使用相同的程序不起作用,我得到以下异常: System.Net.WebException:异常 在WebClient请求期间发生。 --->System.IO.IOException-登录失败:用户名未知或错误 密码 嗯。。。由于smb共享上的访问权限被授予

我在内部网中有一个网络共享,允许每个人(来宾)进行写访问

因此,我用c语言编写了一个程序(mojoportal模块,无论如何,我认为也是一样的),它在该路径中编写了一些文件,在visual studio中工作得非常好

现在,在IIS 7.5中使用相同的程序不起作用,我得到以下异常:

System.Net.WebException:异常 在WebClient请求期间发生。 --->System.IO.IOException-登录失败:用户名未知或错误 密码

嗯。。。由于smb共享上的访问权限被授予每个人,我不明白为什么它在IIS上不起作用

代码如下:

WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);
可能是什么?
谢谢

您尝试设置凭据了吗

我相信everyone组仍然需要某种类型的有效凭据,而不设置您是匿名的凭据

wc.Credentials = CredentialCache.DefaultCredentials;

您是否尝试过设置凭据

我相信everyone组仍然需要某种类型的有效凭据,而不设置您是匿名的凭据

wc.Credentials = CredentialCache.DefaultCredentials;

这似乎不是访问SMB共享的问题,而是访问存储在
urltodownload
中的网站的问题。正如Richard所说,您可能希望使用默认凭据,即
wc.UseDefaultCredentials=true
或某些特定的凭据集,或在
urltodownload
上设置网站以接受匿名连接


请参阅导致
WebException
的原因,了解
DownloadFile
方法。

访问SMB共享似乎不是问题,而是访问存储在
urltodownload
中的网站的问题。正如Richard所说,您可能希望使用默认凭据,即
wc.UseDefaultCredentials=true
或某些特定的凭据集,或在
urltodownload
上设置网站以接受匿名连接


请参阅导致
WebException
的原因,了解
DownloadFile
方法。

您需要某种凭据才能从asp.net使用共享。您可以在web.config上设置模拟,或使用网络凭据设置wc.Credentials。在web.config中,您可以在system.web部分下设置以下内容:

<identity impersonate="true" userName="username_here" password="password_here" />

您需要某种凭据才能使用asp.net中的共享。您可以在web.config上设置模拟,或使用网络凭据设置wc.Credentials。在web.config中,您可以在system.web部分下设置以下内容:

<identity impersonate="true" userName="username_here" password="password_here" />

默认情况下,您的IIS服务无权访问文件共享。您可以尝试在应用程序池标识设置为本地系统的情况下运行站点,或者手动控制从web.config执行代码的标识:

<system.web>
  <identity impersonate="true" userName="user with correct rights or admin" password="password"/>
  ...

...

默认情况下,您的IIS服务无权访问文件共享。您可以尝试在应用程序池标识设置为本地系统的情况下运行站点,或者手动控制从web.config执行代码的标识:

<system.web>
  <identity impersonate="true" userName="user with correct rights or admin" password="password"/>
  ...

...

对于我的Visual Studio应用程序(WinForms),创建一个强名称键(SNK)供应用程序使用是一个简单的操作

我不知道为什么

也许在VisualStudio中创建SNK有一种方法可以设置我上面的其他作者所指的这些凭证


希望这能有所帮助。

对于我的Visual Studio应用程序(WinForms),创建一个强名称键(SNK)供应用程序使用是一个简单的操作

我不知道为什么

也许在VisualStudio中创建SNK有一种方法可以设置我上面的其他作者所指的这些凭证


希望这有帮助。

哦,我复制异常是错误的,它是System.IO.IOException-登录失败:未知用户名或错误密码。(因为它是意大利语,所以我翻译成英语)哦,我复制异常是错误的,它是System.IO.IOException-登录失败:未知用户名或错误密码。(因为它是意大利语的,所以我把它翻译成了英语)这太疯狂了,只有当我以管理员的身份运行应用程序时,它才有效,我不能这么做……我复制了你的问题。请参阅我的答案:默认情况下,您的IIS服务无权访问文件共享。您可以尝试在应用程序池标识设置为本地系统的情况下运行站点。或者您设置了共享文件夹的特殊权限?由于本地系统(系统),它在win 2008 r2上不起作用。仅以管理员身份工作,如果我加载用户配置文件,那么“它在win 2008 r2上不工作”是什么意思?它是否引发异常:System.Net.WebException:WebClient请求期间发生异常。-->System.UnauthorizedAccessException:对路径“…”的访问被拒绝。在System.IO?它在我的Win 2008 r2上非常有效,应用程序池标识设置为:本地系统或网络服务。。如果我使用本地服务,那么它将不起作用。。或者为网络策略设置了一些限制。可能是我的代码:下载前,检查共享文件是否已下载(缓存)。这太疯狂了,只有当我以管理员身份运行应用程序时,它才能工作,我不能这样做……我复制了你的问题。请参阅我的答案:默认情况下,您的IIS服务无权访问文件共享。您可以尝试在应用程序池标识设置为本地系统的情况下运行站点。或者您设置了共享文件夹的特殊权限?由于本地系统(系统),它在win 2008 r2上不起作用。仅以管理员身份工作,如果我加载用户配置文件,那么“它在win 2008 r2上不工作”是什么意思?它是否引发异常:System.Net.WebException:WebClient请求期间发生异常。-->System.UnauthorizedAccessException:对路径“…”的访问被拒绝。在System.IO?它在我的Win 2008 r2上非常有效,应用程序池标识设置为:本地系统或网络服务。。如果我使用本地服务,那么它将不起作用。。或者对网络政策设置了一些限制。也许是我的代码:在道琼斯指数之前