Использование 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!

Другие вопросы по тегам