我有一个想要添加视图处理的 web api 2.0 应用程序。
我正在使用 postal.mvc5 并希望从应用程序中发送电子邮件。
我已经解决了常规控制器路由问题,现在要解决最后一个错误。
使用 Postal.Mvc5 实现的 _ViewStart.cshtml 页面是:
@{
Layout = null;
}
我的视图文件夹中的 web.config 页面:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web.webPages.razor>
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc"/>
<add namespace="System.Web.Mvc.Html"/>
<add namespace="System.Web.Optimization"/>
<add namespace="Postal" />
</namespaces>
</pages>
</system.web.webPages.razor>
</configuration>
我得到的错误是:
类型“ASP._Page_Views_Emails__ViewStart_cshtml”不继承自“System.Web.WebPages.StartPage”。
完整的错误是:
来源:System.Web ----目标站点:CheckAssignableType 时间戳:2017 年 10 月 23 日下午 3:05:48 消息:类型“ASP._Page_Views_Emails__ViewStart_cshtml”不继承自“System.Web.WebPages.StartPage”。----StackTrace:在 System.Web.UI.Util.CheckAssignableType(Type baseType, Type type) 在 System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp) 在 System.Web .Compilation.BuildManager.CreateInstanceFromVirtualPath(String virtualPath, Type requiredBaseType) at System.Web.WebPages.BuildManagerWrapper.CreateInstanceOfType[T](String virtualPath) at System.Web.WebPages.VirtualPathFactoryExtensions.CreateInstance[T](IVirtualPathFactory factory, String virtualPath)在 System.Web.WebPages.VirtualPathFactoryManager。
1 supportedExtensions) at System.Web.WebPages.StartPage.GetStartPage(WebPageRenderingBase page, String fileName, IEnumerable
1 supportExtensions) at System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) at System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) at Postal.EmailViewRenderer.RenderView(IView view, ViewDataDictionary viewData, ControllerContext controllerContext, ImageEmbedder imageEmbedder) at Postal.EmailViewRenderer.Render(Email email, String viewName) at Postal.EmailService.CreateMailMessage(Email email) at Postal.EmailService.Send(Email email) at Postal.Email.Send()
我知道这是非常规的,但是我该如何解决最后一个错误呢?
进一步调试更新:
我在 Web 服务上使用 Enterprise Logging,并注意到它直到下一次调用才发送错误电子邮件,因此直到下一次调用 Web 服务时才发送我的错误电子邮件。我使用 smtp 设置在主 web.config 文件中添加了一个 system.net 部分,这实际上使情况变得更糟。Web 服务运行时没有发送电子邮件。
我尝试在 web api 的 global.asax 文件中实例化一个常规的 web 应用程序实例,但这似乎没有真正的效果。
我已经根据下面的答案向 web.config 文件添加了一些路由,但这也没有效果。wep api 2 应用程序具有与常规 Web 应用程序相同的引用和其他配置项,但仍然存在问题。
一种解决方案是将 web api 2 重新创建为添加了 web api 2 的常规网站。网上有很多关于这方面的参考资料,web api 2 应用程序的原始应用程序是一个具有 api 功能的常规网站。
从阅读文献来看,我正在处理的这个对偶问题可能已经用 .Net Core 解决了,但我不能在我们当前的系统上使用它。
我想下一个问题是为什么在 web api 2 运行时 sendmail 被禁用。
web api 2 会在 web api 调用期间禁用 sendmail 怎么样?