Использование MvcMailer в WCF
Мы создаем приложение, которое использует ASP.NET MVC4 для веб-приложения и WCF для веб-служб, которые обращаются к общему хранилищу данных.
Веб-приложение отправляло электронные письма, используя MvcMailer, я надеялся, что кто-нибудь может указать мне на некоторые ресурсы, которые показывают, как MvcMailer может также использоваться из WCF (если указанные ресурсы существуют).
Я прошел через: https://github.com/smsohan/MvcMailer/issues/44
Я бы лучше не катил свой собственный код, но я готов пойти по этому пути, если нет лучшего решения.
Спасибо!
1 ответ
Я был парнем, который разместил эту проблему на GitHub. Сейчас для этого нет ресурсов, поэтому мне пришлось самому в этом разобраться. Вот небольшое руководство, которое я написал своим коллегам. Я должен опубликовать это где-нибудь онлайн.
Как разрешить MvcMailer функционировать в вашем WCFService.
1) Включить HttpContext
A) Добавьте следующее в ваш Web.Config
<system.serviceModel>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" aspNetCompatibilityEnabled="true" />
</system.serviceModel>
Б) Добавьте следующий атрибут в ваш класс обслуживания.
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
//public class MyService
//{
// ...
//}
2) Включить бритву
A) Добавьте следующее в ваш Web.Config
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</assemblies>
<buildProviders>
<add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor"/>
</buildProviders>
</compilation>
</system.web>
Б) Добавьте следующие ссылки в сервисный проект WCF.
System.Web.WebPages
System.Web.WebPages.Razor
C) Выберите ссылки, щелкните правой кнопкой мыши и откройте Свойства для них. Затем установите следующее свойство:
Copy Local = true
Готово! MvcMailer теперь будет работать в вашем сервисе WCF!