web-dev-qa-db-ja.com

ASP.NET Web Api-Startup.csは存在しません

Startup.csクラスを含まないASP.NET Web Apiソリューションがあります。これは、ソリューションがMVCソリューションとして作成されたものではないためと思われます。

以下に示すように、スタートアップのすべてのコードはGlobal.asax.csファイルで定義されています

public class Global : HttpApplication
{
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        AreaRegistration.RegisterAllAreas();
        GlobalConfiguration.Configure(WebApiConfig.Register);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
    }
}

ただし、今はOAuthのサポートが必要です。見つかったすべてのドキュメントは、次のクラスを持つStartup.csに基づいています。

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
}

ソリューションにこの新しいクラスを追加するだけで、ソリューションは引き続き機能しますか?

これはGlobal.asax.csクラスと競合しますか?

EDIT:Startup.csクラスを追加した後、追加したブレークポイントに到達できません...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Microsoft.Owin;
using Owin;

[Assembly: OwinStartup(typeof(MyGame.Startup))]

namespace MyGame
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            ConfigureAuth(app);
        }
    }
}

何が起こっているのでしょうか?

35
user3587624

Startup.csは、OWIN認証パッケージの一部です。パッケージがNuGetを介して追加されない場合、動作することを保証できません。ただし、この答えから判断すると、環境によっては動作する可能性があります。

https://stackoverflow.com/a/24678109/6442626

簡単な答え:NuGetからMicrosoft.Owin.Security.OAuthをインストールした場合、それは良いはずです。それ以外の場合は、インストールする必要があります。

更新:MVCが起動時にConfigurationメソッドを呼び出すようにするには、NuGetからMicrosoft.Owin.Host.SystemWebパッケージもインストールする必要があります。 web.configで変更する必要のある特別なものはありません。IISは自動的にOwinホストを検出し、自動的にロードします。

23
Tyler Stahlhuth

Owinパッケージをインストールしている場合は、次を使用して起動クラスを簡単に作成できます。

enter image description here

30
freedeveloper

独自のスタートアップクラスを追加できますが、Owinがそれを認識していることを確認する必要があります。 これを行う方法はいくつかあります ですが、Startupクラスを使用する場合は、OwinStartup属性を使用する必要があります。

例えば:

[Assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]
5
SharpLizard

Web.config(ルートフォルダー内)でこの行を削除するまで、Startup.csは実行されませんでした。

<add key="owin:AutomaticAppStartup" value="false" /> 
2
Peter J