簡體   English   中英

System.NullReferenceException for .NET 服務在 Windows Server IIS 上運行,但在 Visual Studio IIS Express 中運行時在本地工作

[英]System.NullReferenceException for .NET service running on windows server IIS but works locally when running in Visual Studio IIS Express

我有一個我繼承的 .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 中遺漏了一些東西,以允許它在 Windows Server 上的 IIS 上工作,或者可能缺少 Windows Server 上的 IIS 中的功能設置。

這是相關的 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>

任何幫助,將不勝感激。 謝謝!

我能夠回答我自己的問題。 在這種情況下,我的修復是生產服務器上的 web.config 缺少行<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />

我通過檢查 Windows 事件查看器日志發現了更多信息,並發現了這個關鍵信息The service cannot be activated because it requires ASP.NET compatibility.

將上述行插入 web.config 並重新啟動 AppPool 和服務器后,服務開始正常工作。 我希望這對未來的任何人都有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM