2017-07-03 28 views
2

我有設計危機。OWIN啓動類多次調用

我有幾件事情在我的應用程序生命週期中必須保持靜態。

A public void Configuration(IAppBuilder app)在Startup.cs類中的方法被稱爲比一次,也他們似乎是「靜態」變量的多個實例。

我有這個在我的啓動類

[assembly: OwinStartup(typeof(Startup))] 

也是用這些parkages

<package id="Antlr" version="3.4.1.9004" targetFramework="net45" /> 
    <package id="EntityFramework" version="6.1.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Core" version="2.2.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Identity.Owin" version="2.2.1" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Razor" version="3.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.Core" version="2.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.2" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.Web.Optimization" version="1.1.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.Owin" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net45" /> 
    <package id="Microsoft.AspNet.WebPages" version="3.2.3" targetFramework="net45" /> 
    <package id="Microsoft.Owin" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Cors" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Host.SystemWeb" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.Cookies" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Owin.Security.OAuth" version="3.1.0" targetFramework="net45" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" /> 
    <package id="Newtonsoft.Json" version="10.0.3" targetFramework="net45" /> 
    <package id="Owin" version="1.0" targetFramework="net45" /> 
    <package id="WebGrease" version="1.5.2" targetFramework="net45" /> 

我如何能確保在startup.cs配置只執行一次?

+0

我認爲你可以使用ApplicationStart在Global.asax代替Owin的配置 –

+0

的是什麼使你懷疑它不止一次地被呼叫?如果您遵循OWIN文檔(https://docs.microsoft.com/en-us/aspnet/web-api/overview/hosting-aspnet-web-api/use-owin-to-self-host-web-api ),你會得到一個類似於這個的代碼 - 「WebApp.Start (url:baseAddress);'你會調用它一次。 – Subbu

+1

檢查您是否在網上花園中運行您的應用程序?可能這被稱爲多次,由多個工作進程 – zaitsman

回答

2

這發生在我身上,啓動運行兩次。 問題是這個

<add name="Owin" verb="" path="*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb"/> 

我從配置刪除這條線,並且固定它

enter image description here