WCF服务无法通过邮件定义发送邮件

  • 本文关键字:定义 服务 WCF c# wcf email
  • 更新时间 :
  • 英文 :

    // stuff......
    return SendCreationMail(Membership.GetUser((Guid)request.UserEntityId), request, new Control());
}
private const string TemplateRoot = "~/app_shared/templates/mail/";
private const string ServerRoot = TemplateRoot + "server/";
public static bool SendCreationMail(MembershipUser user, IServerAccountRequest request, Control owner)
{
    var definition = new MailDefinition { BodyFileName = string.Concat(ServerRoot, "creation.htm"), IsBodyHtml = true };
    var subject = "New {0} account created!".FormatWith(request.ServerApplicationContract.Id);
    var data = ExtendedData(DefaultData, subject, user);
    data.Add("<%ServerApplication%>", request.ServerApplicationContract.Id);
    data.Add("<%ServerApplicationName%>", request.ServerApplicationContract.ApplicationName);
    data.Add("<%AccountUsername%>", request.AccountUsername);
    data.Add("<%ServerInfo%>", "/server/{0}/info".FormatWith(request.ServerApplicationContract.Id.ToLower()));
    return definition.CreateMailMessage(user.Email, data, owner).Send(subject, ApplicationConfiguration.MailSenderDisplayName);
}

:

Value不能为空。参数名称:basepath

在System.Web.Util.UrlPath

。组合(String appPath, String basepath,字符串相对)
在System.Web.UI.WebControls.MailDefinition.CreateMailMessage(字符串收件人,字典替换,控件所有者)
在Damnation.Website.Main.Common.MailTemplating.Server.SendCreationMail(会员用户,IServerAccountRequest请求,控件所有者)
Damnation.Website.Main.Common.MailTemplating.Server.SendCreationMail (IServerAccountRequest请求)
在Damnation.Website.Main.Business.Model.ServerAccountRequest.UpdateRequestsAfterServerProcessing (IEnumerable"1结果)

事情是我没有一个实际的控件传递给它,我想知道如何设置一个控件,避免这种毫无意义的异常。我用的是相对路径…所以这没有意义。

拥有该服务的应用程序位于ASP之下。.NET WebForms .NET消费者应用程序也是.NET 4下的控制台应用程序

我有同样的问题,我了解到这是因为它无法找到控制的路径时,试图执行您的definition.CreateMailMessage。您希望创建一个空白的web用户控件。也许这不是最优雅的解决方案,但它确实有效。

我是这样做的:

1)在项目中添加一个Web用户控制文件,例如Test.ascx。

2)在.svc文件中添加以下代码:

Page page = new Page();
Test test = (Test)page.LoadControl("Test.ascx");

3)更新定义。CreateMailMessage line to:

return definition.CreateMailMessage(user.Email, data, test).Send(subject, ApplicationConfiguration.MailSenderDisplayName);
您将不再得到base - path null异常。

我有同样的问题,但这是因为我是在一个项目。net控制台应用程序,当我把代码传递给ASP。

我有同样的错误,但对我来说问题是,我是使用相对路径为我的BodyFileName和EmbeddedObjects。将它们更改为绝对路径为我修复了此错误。