2017-10-23 7 views
0

私はビュー処理を追加したいWeb API 2.0アプリケーションがあります。_viewStart.cshtmlは、Web API 2.0アプリケーションでSystem.Web.WebPages.StartPageを継承しません。

私はpostal.mvc5を使用しており、アプリケーション内から電子メールを送信したいと考えています。

私は定期的なコントローラのルーティングを解決し、解決する最終的なエラーになっています。

Postal.Mvc5で実装されて_ViewStart.cshtmlページがされています。私は取得していますエラーがある

<?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> 

:ビューフォルダ内の

@{ 
    Layout = null; 
} 

私のweb.configページ

タイプ 'ASP._Page_Views_Emails__ViewStart_cshtml'は、 'System.Web.WebPages.StartPage'から継承しません。

完全な誤りがある:

出典:System.Webの----ターゲットサイト:CheckAssignableTypeタイムスタンプ:2017年10月23日午前3時05分48秒PMメッセージ:タイプ「ASP._Page_Views_Emails__ViewStart_cshtml 'は' System.Web.WebPages.StartPage 'から継承しません。 ---- StackTrace:System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath仮想パス、タイプrequiredBaseType、HttpContextコンテキスト、ブールallowCrossApp)のSystem.Web.UI.Util.CheckAssignableType(タイプbaseType、タイプタイプ) System.Web.WebPages.BuildManagerWrapper.CreateInstanceOfType [T](String virtualPath)System.Web.WebPages.VirtualPathFactoryExtensions.CreateInstance [T](IVirtualPathFactoryファクトリ、String virtualPath)での.Compilation.BuildManager.CreateInstanceFromVirtualPath(String virtualPath、Type requiredBaseType) System.Web.WebPages.StartPage.GetStartPage(WebPageRenderingBaseページ)のSystem.Web.WebPages.VirtualPathFactoryManager.VirtualPathFactoryManager.CreateInstanceOfType [T](String virtualPath)System.Web.WebPages.VirtualPathFactoryExtensions.CreateInstance [T](IVirtualPathFactoryファクトリ、String仮想パス) 、IVirtualPathFactory仮想パスファクトリ、String appDomainAppVirtualPath、String fileName、IEnumerable 1 supportedExtensions) at System.Web.WebPages.StartPage.GetStartPage(WebPageRenderingBase page, String fileName, IEnumerable 1 supportedExtension System.Web.Mvc.RazorView.RenderView(ViewContext viewContext、TextWriterライター、オブジェクトインスタンス)System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext、TextWriter writer)Postal.EmailViewRenderer.RenderView(IViewビュー、ViewDataDictionary Postal.Email.Send()のPostal.EmailService.Send(電子メール電子メール)でPostal.EmailService.CreateMailMessage(電子メール電子メール)のPostal.EmailViewRenderer.Render(電子メール電子メール、文字列viewName)でのviewData、ControllerContext controllerContext、ImageEmbedder imageEmbedder)

私はこれがかなり独創的であることを知っていますが、この最後のエラーを回避するにはどうすればよいですか?さらにデバッグの

更新:

私は、Webサービスにエンタープライズ・ロギングを使用して、私のエラーメールが次に呼び出されるまで送信されていなかったので、それは次の呼び出しまでのエラーメールを送信していなかったことに気づきましたWebサービスに送信します。私は、smtpの設定でメインのweb.configファイルにsystem.netセクションを追加しましたが、実際には悪化しました。 Webサービスの実行中に電子メールが送信されていませんでした。

ウェブAPIのglobal.asaxファイルで通常のWebアプリケーションインスタンスをインスタンス化しようとしましたが、これは実際の効果がないようです。

以下の回答ごとにweb.configファイルにルーティングを追加しましたが、これも無効です。 wep api 2アプリケーションには、通常のWebアプリケーションと同じ参照およびその他の設定項目がありますが、まだ問題があります。

1つの解決策は、web api 2を追加した通常のWebサイトとしてWeb api 2を再作成することです。そこにはたくさんのオンラインリファレンスがあり、web api 2アプリケーションが分割された元のアプリケーションはapi機能を備えた通常のWebサイトでした。

私が扱っているこの二重性の問題はおそらく.Net Coreで解決されていますが、現在のシステムでは使用できません。

次の質問は、web api 2の実行中にsendmailが無効になっている理由です。

web api 2では、Web API呼び出し中にsendmailが無効になるのはどうですか?

答えて

0

私はついにこの問題を解決しました。これは、Postalによって使用されるEmailsフォルダのweb.configファイルに問題がありました。

通常、web.configファイルには、Webアプリケーションをインスタンス化するときに正しい情報が含まれているため、viewsフォルダのweb.configファイルに必要な型が継承されます。

web api 2アプリケーションで開始すると、これらのタイプは階層に定義されていないため、ビューフォルダによって自動的に継承されません。

ビュー/メールフォルダのweb.configはこれに変更されました:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" 
    type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" 
    type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    requirePermission="false"/> 
     <section name="pages" 
    type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
    requirePermission="false"/> 
    </sectionGroup> 
    </configSections> 
    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.2.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
    <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> 
    <appSettings> 
    <add key="webpages:Enabled" value="false"/> 
</appSettings> 
</configuration> 

システムは、ビューにルーティングし、期待通りに電子メールを処理しました。

上記のメールの問題は、送信途中でメール送信インターフェイスの爆撃が原因で発生していました。それは実際にWeb API 2によって引き起こされた問題ではありませんでした。

関連する問題