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);
}
}
}
何が起こっているのでしょうか?
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ホストを検出し、自動的にロードします。
独自のスタートアップクラスを追加できますが、Owinがそれを認識していることを確認する必要があります。 これを行う方法はいくつかあります ですが、Startupクラスを使用する場合は、OwinStartup属性を使用する必要があります。
例えば:
[Assembly: OwinStartup(typeof(MyNamespace.MyStartupClass))]
Web.config(ルートフォルダー内)でこの行を削除するまで、Startup.csは実行されませんでした。
<add key="owin:AutomaticAppStartup" value="false" />