私は、Azure WebJobのSendGrid拡張機能を使用しようとしています。私は次のエラーで、残念ながら、WebJobアプリのクラッシュを例に従うことを試みたが、しました:WebJobが読み込まれていませんSendGridMailアセンブリ
Could not load file or assembly 'SendGridMail, Version=6.1.0.0, Culture=neutral, PublicKeyToken=2ae73662c35d80e4' or one of its dependencies. The system cannot find the file specified.
はかつてNewtonSoftのJSONを含む前に似たように実行した、私は次のように追加することで問題を解決しようとしましたapp.configに:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="SendGridMail" publicKeyToken="2ae73662c35d80e4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
</assemblyBinding>
残念ながら、それは役に立たなかった(同じエラーメッセージ)。
私は、WebJobs SendGrid拡張機能のnugetパッケージが古いバージョンのSendGrid(v6.1)をインストールしていることに気付きました。しかし、私はWebJob拡張機能の例に従うことをしようとしている、と彼らはステートメントを使用して、次のしている:
using SendGrid.Helpers.Mail;
と、残念ながら、SendGrid.Helpers.Mail名前空間はSendGridのV6.1には存在しません。トムのフィードバックに基づいて詳細
追加
、私はSendGrid拡張nugetパッケージをアンインストールし、そしてproject.jsonを編集して「手動」に必要なライブラリをインストールしました。それは私にライブラリのそれぞれの最新の安定したバージョンを取得...しかし、アプリは起動時に同じエラーでクラッシュします。
public static void Main(string[] args)
{
var config = new JobHostConfiguration()
{
NameResolver = new QueueNameResolver(new AzureContext()),
};
if(config.IsDevelopment)
{
config.UseDevelopmentSettings();
}
config.Tracing.ConsoleLevel = TraceLevel.Info;
// this is the line where the exception gets thrown
config.UseSendGrid();
JobHost host = new JobHost(config);
host.RunAndBlock();
}
私は次のようにFunctions.csでメソッドのシグネチャを変更し、SendGrid例を以下しています:
public static void ProcessPhoneFileMessage(
[QueueTrigger("%" + nameof(ContainerQueueConstants.PhoneFiles) + "%")] AgencyOutreachMessage msg,
[SendGrid] out Mail message
)
{
StringWriter swLogger = new StringWriter();
try
{
GeneratePhoneFileJob fmJob = new GeneratePhoneFileJob(swLogger, msg);
fmJob.Execute();
}
catch(Exception e)
{
swLogger.WriteLine($"{nameof(GeneratePhoneFileJob)} triggered an exception, message was: {e.Message}");
}
message = new Mail();
message.Subject = "Phone File Job";
message.AddContent(new Content("text/plain", "Completed the Phone File Job"));
message.AddContent(new Content("text/plain", swLogger.ToString()));
Personalization personalization = new Personalization();
personalization.AddTo(new Email("[email protected]", "Mark Olbert"));
message.AddPersonalization(personalization);
}
私が呼び出しをしない場合はここで
は、スタートアップコードですアプリケーションのスタートアップコードでUseSendGrid()メソッド定義が解析されているときに例外が発生し、UseSendGrid()を必ず呼び出すように指示します。しかし、上記のように、UseSendGrid()は爆発します。も例外、しかし、トムの例に基づいた電子メールのいずれかを
、私はそれが出てメールパラメータを使用していなかったので、メッセージ処理機能を変更し、単純に構築されており、内部からのメールを送りましたメソッド本体:
SendGridAPIClient sg = new SendGridAPIClient("redacted");
Mail message = new Mail();
message.Subject = "Phone File Job";
message.AddContent(new Content("text/plain", "Completed the Phone File Job"));
message.AddContent(new Content("text/plain", swLogger.ToString()));
Personalization personalization = new Personalization();
personalization.AddTo(new Email("redacted", "Mark Olbert"));
message.AddPersonalization(personalization);
sg.client.mail.send.post(requestBody: message.Get());
コンソールアプリは今も元気を起動し、メッセージプロセッサが正常に動作...しかし、電子メールは送信されません取得します。または、むしろ、誰も到着せず、SendGrid.comでダッシュボードを確認すると、何の活動も記録されません。
成功!
私はついにこれを動作させました。 「最終的な」問題は、私が作成していた電子メールの差出人アドレスを含めることを怠ったということでした。私がそれをしたら、それは魅力のように働いた。
SendGridMail.dllアセンブリのバージョンの不一致があるように見えるん。エラーが発生しました。 "SendGrid.Helpers.Mail.Mail"と入力するためにSendGridAttributeをバインドできません。 –