从 ASP.NET 应用程序访问网络共享。在 Visual Studio 中有效,但在 IIS 中无效,为什么?

发布于 2024-10-23 15:45:21 字数 499 浏览 8 评论 0原文

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

所以,我用 C# 编写了一个程序(mojoportal 模块,无论如何,我认为它是相同的),在该路径中写入一些文件,并在 Visual Studio 中工作伟大的。

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

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

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

代码是这样的:

WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);

它可以是什么? 谢谢

I have a network share in the intranet that allows write access to everyone (guest)

So, i wrote a program (mojoportal module, anyway it's the same, i think) in c# that writes some files in that path, and in visual studio works great.

Now, using the same program in IIS 7.5, does not work, i get this exception:

System.Net.WebException: An exception
occurred during a WebClient request.
---> System.IO.IOException - Logon failure: unknown user name or bad
password.

Well... since the access on the smb share is granted to everybody, i don't understand why it does not work on IIS...

The code is this:

WebClient wc = new WebClient();
wc.DownloadFile(urltodownload, smbshare);

What it can be?
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

携余温的黄昏 2024-10-30 15:45:21

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

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

Your IIS service not granted to access file share by default. You could try run your site with app pool identity set to Local System, or manually control the identity under which code is executed from web.config:

<system.web>
  <identity impersonate="true" userName="user with correct rights or admin" password="password"/>
  ...
心如狂蝶 2024-10-30 15:45:21

您是否尝试过设置凭据?

我相信每个人组仍然需要某种有效的凭据,而不设置您是匿名的凭据......

wc.Credentials = CredentialCache.DefaultCredentials;

Have you tried setting the credentials?

I believe that the everyone group still requires a valid credential of some sort, without setting the credentials you are anonymous...

wc.Credentials = CredentialCache.DefaultCredentials;
雪落纷纷 2024-10-30 15:45:21

看起来这不是访问 SMB 共享的问题,而是访问存储在 urltodownload 中的网站的问题。就像理查德所说,您可能想要使用默认凭据,即 wc.UseDefaultCredentials = true; 或某些特定的凭据集,或者在 urltodownload 设置网站以接受匿名连接。

请参阅 DownloadFile 方法可能导致 WebException 的原因 @MSDN

It looks like its not an issue with accessing the SMB share, its an issue accessing the website stored in urltodownload. Like Richard said, you may want to use the default credentials i.e. wc.UseDefaultCredentials = true; or some specific set of credentials or set up the web site at urltodownload to accept anonymous connections.

Refer to what can cause WebException for the DownloadFile method @ MSDN.

风吹雨成花 2024-10-30 15:45:21

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

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

You need some kind of credentials to use a share from asp.net. You can setup an impersonation on the web.config or set wc.Credentials using network credentials. In the web.config you would set the follwoing under the system.web section:

<identity impersonate="true" userName="username_here" password="password_here" />
青瓷清茶倾城歌 2024-10-30 15:45:21

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

我不知道为什么。

也许在 Visual Studio 中创建 SNK 有一种设置这些凭据的方法,我上面的其他作者也提到过。

希望这有帮助。

For my Visual Studio application (WinForms), it was a simple act of creating a strong name key (SNK) for the application to use.

I'm not sure why.

Perhaps creating a SNK in Visual Studio has a way of setting these Credentials that the other authors above me are referring to.

Hope this helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文