asp.net无法获取iis目录的问题解决方法

 更新时间:2014年02月08日 15:55:10   作者:   我要评论
本文介绍了Asp.Net无法获取IIS拾取目录的解决办法,需要的朋友可以参考下

如果你有一个需要偶尔发送邮件的Asp.Net的网站,可能会有代码长的和下面的很像:

复制代码 代码如下:

//这是简写,并非实际项目代码
public void Send(string from, string to, string subject, string body)
{
    var msgMail = new MailMessage(from, to, subject, body);
    msgMail.IsBodyHtml = true;
    var server = new SmtpClient("localhost");
    server.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis;
    server.UseDefaultCredentials = true;
    server.Send(msgMail);
}

可能它曾经工作,但是当你切换到或初步部署到新的Windows 2008 服务器时,你会遇到错误提示信息"Cannot get IIS Pickup Directory!"

现在,我经常称呼自己为世界上最厉害的系统管理员。这不是我研究的方向。我并不非常擅长,但是有时在实际工作中我不得不面对和解决这些问题以获取报酬。

1)  SMTP服务是否安装?

你的Web服务器或许还没有安装SMTP服务,所以进入服务管理中确定SMTP服务在功能列表中。如果不在,就需要你添加上去。

2) SMTP是否已配置?

仅仅确定SMTP服务已经安装是不够的。首先,当你服务器启动时(我曾经遇到些客户端软件安装前可以发送邮件,但是之后就不可以了,他们重启了服务器,而Mail服务没启动,就这么简单),确保你的SMTP服务也跟着自动启动。进入服务,确保SMTP服务在那里,并且已经启动,启动类型也为自动。

 

然后,你应该配置SMTP服务——说句实话,我对此知道的不多,所以我就不详细解释了,但是你需要知道SMTP仍然是IIS6.0的一部分,所以你可以在IIS6.0的管理界面找到它。一个快速突破点,因为它可能不符合了一些接收邮件服务器需要一个完整的合格域名的要求,而你的服务器可能只有一个被严格被限制使用的简单域名,比如像“Server15”之类的,所以在SMTP属性中,Delivery标签下 ,点击添加按钮,给服务器一个真正的完整的满足要求的域名。

3) 防火墙是打开的吗?

你的一些操作有可能与防火墙冲突,所以现在是个好时机去排除SMTP安装故障。你可以通过Telnet本机通过端口25,手动给自己发个简单的邮件。下面一个例子可以照着做。

复制代码 代码如下:

telnet localhost 25
HELO somehost.com
MAIL FROM: yourname@somedomain.com
RCPT TO: the_to_address@somedomain.com
DATA
Subject: the subject of the mail
Blah blah blah message body


点击回车键,过会进入发件箱 如果你不能连接,或者邮件不能送达,这里还有一些其他问题需要你解决,因为防火墙是不会影响拾取目录的获取。

4) IIS是否有权限获取元数据(拾取目录信息)

这里我们将会遇到实际的出错原因--你在网站跑的程序也许没有权限获取保存着拾取目录名的IIS 元数据(metabase),这通常就是引起错误的原因。

你需要下载IIS 6.0 资源包。里面有你需要用到的“metaacl.vbs”脚本而我不需要的。[点我下载]

下载并安装,然后运行Metabase Explorer(你可以搜索它,我的在“Program Files (x86)\IIS Resources\Metabase Explorer”目录下)。 你应该在你的IIS进程为SmtpSvc服务添加读权限(我为IIS_IUSRS组添加了权限,在配置中查看为你工作的是否有权限)。

5) IIS是否有权限写入拾取目录

下面这步只是补充,因为你在下次使用网站来发送邮件可能会遇到权限错误。这时,你需要为你的IIS用户添加写入拾取目录的权限(对我而言,我为“IIS_IUSES”添加了拾取目录“c:\inetpub\mailroot”的写入权限)。

这样不管怎样,使它为我工作了,但是对任意的服务器来说,可能因为我点击了某些地方对程序有着关键作用的一些有魔力的多选框,所以如果你仍有问题,或者知道这些问题的答案,请在评论中提出,正如我所提到的,我可能修改了一些自己没注意到的地方,导致可以发送邮件。如有不足,我将及时改正。

相关文章

  • ASP.NET C#生成下拉列表树实现代码

    ASP.NET C#生成下拉列表树实现代码

    下拉列表树很方便且时尚的一个导航,貌似很多的朋友都想实现这样一个列表树,本文将满足你们的设想,通过本文你们可以学到如何使用c#生成下拉列表树,感兴趣的你可不要错过了啊
    2013-02-02
  • ASP.NET中为DataGrid添加合计字段

    ASP.NET中为DataGrid添加合计字段

    ASP.NET中为DataGrid添加合计字段...
    2006-09-09
  • asp.net 临时数据保存实现代码

    asp.net 临时数据保存实现代码

    在一个程序运行的时候往往我们会回到上一个页面,或者我们会需要当时留在这个页面的临时数据,例如,我们用百度搜索“脚本”之后我们会看到很多那啥我就不再说了啊!然后我们返回本来页面在文本框内会有“脚本”的字样,我们一下代码段就是实现这个功能
    2012-04-04
  • 运行page页面时的事件执行顺序及页面的回发与否深度了解

    运行page页面时的事件执行顺序及页面的回发与否深度了解

    page页面时的事件执行顺序的了解对于一些.net开发者起到者尤关重要的作用;页面的回发与否会涉及到某些事件执行与不执行,在本文中会详细介绍,感兴趣的朋友可以了解下
    2013-01-01
  • Asp.net中判断一个session是否合法的方法

    Asp.net中判断一个session是否合法的方法

    今天突然想到一个判断session是否合法的做法,asp.net的,之前我们的做法是下面这样的形式的:
    2013-07-07
  • ASP.NET全栈开发教程之前后台校验结合详解

    ASP.NET全栈开发教程之前后台校验结合详解

    这篇文章主要给大家介绍了关于ASP.NET全栈开发教程之前后台校验结合的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-07-07
  • 将FreeTextBox做成控件添加到工具箱中的具体操作方法

    将FreeTextBox做成控件添加到工具箱中的具体操作方法

    以下是对将FreeTextBox做成控件添加到工具箱中的具体操作方法进行了详细的介绍,需要的朋友可以过来参考下
    2013-09-09
  • asp.net 购物车的实现浅析

    asp.net 购物车的实现浅析

    我从来没有进行过正式的web开发,但是我一直喜欢web,所以这篇文章也是我转行web的一个开始吧。或多或少我也参考了几个网站的实现(当然了,只是看看大概的功能而已),所以也请大家多多指教。
    2011-02-02
  • TrieTree服务-组件构成及其作用介绍

    TrieTree服务-组件构成及其作用介绍

    本文将一步步教你配置和使用TrieTree服务,需要的朋友可以参考下
    2013-01-01
  • .net 生成拼音码与五笔码实例代码

    .net 生成拼音码与五笔码实例代码

    在本篇文章里小编给大家整理的是关于.net 生成拼音码与五笔码实例代码内容,需要的朋友们学习参考下。
    2019-08-08

最新评论