Twilio Rest API 抛出错误:无法从程序集“Twilio,版本=1.0.0.0,Culture=neutral,PublicKeyToken=null”加载类型“Twilio.TwilioClient”

Cou*_*ush 3 c# sms twilio

这是我在 C# ASP.Net Mvc 项目中运行的代码。抛出的错误表明它是在封闭的大括号 ( } ) 上抛出的。

    public ActionResult SendSms()
    {
        const string accountSid = "ACCOUNT_SID";
        const string authToken = "AUTH_TOKEN"; 
        TwilioClient.Init(accountSid, authToken);

        var to = new PhoneNumber("+NUMBER");
        var from = new PhoneNumber("+NUMBER");

        var message = MessageResource.Create(
            to: to,
            from: from,
            body: "This is a test.");

        return Content(message.Sid);
    }
Run Code Online (Sandbox Code Playgroud)

我也试过使用

TwilioRestClient restClient = new TwilioRestClient(accountSid, authToken);
Run Code Online (Sandbox Code Playgroud)

代替 TwilioClient.Init(...); 命令。产生同样的错误。这是错误和堆栈跟踪:

[TypeLoadException: Could not load type 'Twilio.TwilioClient' from assembly 
'Twilio, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.]
   Twilio.Controllers.SMSController.SendSms() in 
c:\users\crush\Source\Repos\Twilio\Twilio\Controllers\SMSController.cs:34
   lambda_method(Closure , ControllerBase , Object[] ) +61
   System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, 
Object[] parameters) +14
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext     controllerContext, IDictionary`2 parameters) +157
   System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) +27
   System.Web.Mvc.Async.<>c.    <BeginInvokeSynchronousActionMethod>b__9_0(IAsyncResult asyncResult,     ActionInvocation innerInvokeState) +22
   System.Web.Mvc.Async.WrappedAsyncResult`2.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
   System.Web.Mvc.Async.AsyncInvocationWithFilters.    <InvokeActionMethodFilterAsynchronouslyRecursive>b__11_0() +50
   System.Web.Mvc.Async.<>c__DisplayClass11_1.    <InvokeActionMethodFilterAsynchronouslyRecursive>b__2() +228
   System.Web.Mvc.Async.<>c__DisplayClass7_0.    <BeginInvokeActionMethodWithFilters>b__1(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult     asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
   System.Web.Mvc.Async.<>c__DisplayClass3_6.<BeginInvokeAction>b__3() +35
   System.Web.Mvc.Async.<>c__DisplayClass3_1.<BeginInvokeAction>b__5(IAsyncResult asyncResult) +100
   System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
   System.Web.Mvc.<>c.<BeginExecuteCore>b__152_1(IAsyncResult asyncResult, ExecuteCoreState innerState) +11
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +45
   System.Web.Mvc.<>c.<BeginExecute>b__151_2(IAsyncResult asyncResult, Controller controller) +13
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
   System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
   System.Web.Mvc.<>c.<BeginProcessRequest>b__20_1(IAsyncResult asyncResult, ProcessRequestState innerState) +28
   System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
   System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
   System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
   System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
   System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +9874329
   System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) +48
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +159
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我正在使用 Twilio 版本 5.13.4、VS 2017 和 Windows 8。我也完全看不到消息是如何发送的,TwilioClient 是否只是查找 MessageResource 对象并发送它?也许我对此的误解是它不起作用的原因,但我准确地遵循了本教程https://www.youtube.com/watch?v=ndxQXnoDIj8(我假设)并且错误仍然产生。直接来自 Twilio 站点的不同 c# 实现会产生相同的错误。

更新:我注意到视频中 Twilio 的版本号是 5.3.0 并回溯到那个版本,但发生了同样的错误。

小智 7

一个潜在的原因是,如果您将项目命名为“Twilio”。