System.NullReferenceException для. NET службы, работающей на windows сервере IIS, но работающей локально при работе в Visual Studio IIS Express - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть унаследованный проект. NET, в котором у меня возникают проблемы с получением службы для правильного возврата при работе на Windows Server IIS.

ExceptionType равен System.NullReferenceException

Stacktrace: at Integra.HLX.SB.Web.WS_Reps..ctor() at CreateIntegra.HLX.SB.Web.WS_Reps() at System.ServiceModel.InstanceContext.GetServiceInstance(Message message) at System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)

Эта ошибка выдается, когда я пытаюсь выполнить POST к конечной точке службы. Я предполагаю, что мне чего-то не хватает в файле web.config, чтобы позволить этому работать на IIS с Windows сервера, или, возможно, отсутствует параметр функции в IIS на Windows сервере.

Здесь соответствующие настройки web.config ...

<system.serviceModel> <serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> <bindings> <webHttpBinding> <binding name="binding1"> <security mode="Transport" /> </binding> </webHttpBinding> </bindings> <behaviors> <endpointBehaviors> <behavior name="Integra.HLX.SB.Web.WS_RepsAspNetAjaxBehavior"> <enableWebScript /> </behavior> <behavior name="Integra.HLX.SB.Web.WS_ClientContactsAspNetAjaxBehavior"> <enableWebScript /> </behavior> <behavior name="Integra.HLX.SB.Web.WS_ContactUniverseNameAddressesAspNetAjaxBehavior"> <enableWebScript /> </behavior> <behavior name="Integra.HLX.SB.Web.WS_UsersAspNetAjaxBehavior"> <enableWebScript /> </behavior> <behavior name="jsonBehavior"> <webHttp /> </behavior> </endpointBehaviors> <serviceBehaviors> <behavior name="RESTbehavior"> <serviceMetadata httpGetEnabled="true" /> </behavior> <behavior> <serviceDebug includeExceptionDetailInFaults="true"/> </behavior> </serviceBehaviors> </behaviors> <services> <service name="Integra.HLX.SB.Web.WS_Reps"> <endpoint address="" behaviorConfiguration="Integra.HLX.SB.Web.WS_RepsAspNetAjaxBehavior" bindingConfiguration="binding1" binding="webHttpBinding" contract="Integra.HLX.SB.Web.WS_Reps" /> </service> <service name="Integra.HLX.SB.Web.WS_ClientContacts"> <endpoint address="" behaviorConfiguration="Integra.HLX.SB.Web.WS_ClientContactsAspNetAjaxBehavior" bindingConfiguration="binding1" binding="webHttpBinding" contract="Integra.HLX.SB.Web.WS_ClientContacts" /> </service> <service name="Integra.HLX.SB.Web.WS_ContactUniverseNameAddresses"> <endpoint address="" behaviorConfiguration="Integra.HLX.SB.Web.WS_ContactUniverseNameAddressesAspNetAjaxBehavior" bindingConfiguration="binding1" binding="webHttpBinding" contract="Integra.HLX.SB.Web.WS_ContactUniverseNameAddresses" /> </service> <service name="Integra.HLX.SB.Web.WS_Users"> <endpoint address="" behaviorConfiguration="Integra.HLX.SB.Web.WS_UsersAspNetAjaxBehavior" bindingConfiguration="binding1" binding="webHttpBinding" contract="Integra.HLX.SB.Web.WS_Users" /> </service> <service name="Integra.HLX.SB.Web.WS_SpeakerDataFeed" behaviorConfiguration="RESTbehavior"> <endpoint address="" bindingConfiguration="binding1" binding="webHttpBinding" behaviorConfiguration="jsonBehavior" contract="Integra.HLX.SB.Web.IWS_SpeakerDataFeed" /> </service> <service name="Integra.HLX.SB.Web.WS_DashboardDataFeed" behaviorConfiguration="RESTbehavior"> <endpoint address="" bindingConfiguration="binding1" binding="webHttpBinding" behaviorConfiguration="jsonBehavior" contract="Integra.HLX.SB.Web.IWS_DashboardDataFeed" /> </service> </services> </system.serviceModel>

Любая помощь будет оценена. Спасибо!

1 Ответ

0 голосов
/ 13 февраля 2020

Я смог ответить на свой вопрос. Для меня в данном случае исправлением было то, что в файле web.config на производственном сервере отсутствовала строка <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

. Я узнал больше информации, проверив журналы Windows Event Viewer, и нашел этот ключевой бит информации. The service cannot be activated because it requires ASP.NET compatibility.

После вставки вышеупомянутой строки в web.config и перезапуска AppPool и сервера служба начала работать правильно. Я надеюсь, что это поможет кому-нибудь в будущем.

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