Произошла ошибка при попытке создать контроллер типа 'XYZController'. Убедитесь, что у контроллера есть открытый конструктор без параметров - PullRequest
0 голосов
/ 08 января 2019

Следующий код прекрасно работает при выполнении из Visual Studio, но когда я публикую его и создаю сайт в IIS для доступа к нему, я получаю следующую ошибку:

Код:

public class HelloController : ApiController
    {     

        public string HelloMethod()
        {
            return "Hello World";
        }

    }

Ошибка:

An error has occurred.","ExceptionMessage":"An error occurred when trying to create a controller of
type 'HelloController'. Make sure that the controller has a parameterless public
constructor.","ExceptionType":"System.InvalidOperationException","StackTrace":" at
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor
controllerDescriptor, Type controllerType)\r\n at
System.Web.Http.Dispatcher.HttpControllerDispatcher.d__15.MoveNext()","InnerException":{"Message":"An error has
occurred.","ExceptionMessage":"Retrieving the COM class factory for component with CLSID
{A59E7747-3284-435B-8947-4E004361A6AC} failed due to the following error: 80040154 Class not registered (Exception
from HRESULT: 0x80040154
(REGDB_E_CLASSNOTREG)).","ExceptionType":"System.Runtime.InteropServices.COMException","StackTrace":" at
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached,
RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)\r\n at System.RuntimeType.CreateInstanceSlow(Boolean
publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)\r\n at
System.Activator.CreateInstance(Type type, Boolean nonPublic)\r\n at System.Activator.CreateInstance(Type type)\r\n at
GSWebAPI.Controller.GSConfigController..ctor()\r\n at lambda_method(Closure )\r\n at
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request, HttpControllerDescriptor
controllerDescriptor, Type controllerType)"}}
At line:1 char:1
+ curl http://localhost:8080/api/Hello/HelloMethod
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc
   eption
    + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

1 Ответ

0 голосов
/ 08 января 2019

Это решено сейчас, требовалось только следующее. Спасибо всем за их вклад

Щелкните правой кнопкой мыши пул приложений и выберите «Дополнительные параметры» - в разделе «Общие» установите для параметра «Включить 32-разрядные приложения» значение «True»

.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...