【发布时间】:2017-05-31 17:13:56
【问题描述】:
如果我使用自托管 Web api (OWIN) 启动我的应用程序,则会收到以下错误消息:
{“尝试加载应用时出现以下错误。\r\n - 对于应用启动参数值'....PlugIn.WebService.Startup, ....PlugIn.WebService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null', 程序集 '....PlugIn.WebService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 没有找到。":""}
Owin 在动态加载的程序集中实现。
错误发生在以下行:
webApiDisposable = WebApp.Start<Startup>(url: baseAddress);
基本网址是:http://localhost:42015/
启动看起来像:
public class Startup
{
/// <summary>
/// Configurate the new http client
/// </summary>
/// <param name="appBuilder">OWIN App builder</param>
public void Configuration(IAppBuilder appBuilder)
{
string routeTempl = "api/" + EndpointManager.API_VERSION +
"/{controller}/{action}/{id}";
// Configure Web API for self-host.
HttpConfiguration config = new HttpConfiguration();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: routeTempl,
defaults: new { id = RouteParameter.Optional }
);
// Attribute routing
config.MapHttpAttributeRoutes();
// Set all filter, like for authentication and autoriuation
config.Filters.Add(new IntegratedAuthorization());
// Setup Json-return
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
config.Formatters.JsonFormatter.SerializerSettings =
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver()
};
appBuilder.UseWebApi(config);
}
}
奇怪的是,在另一个项目中它工作得很好。我也试过Owin.Start-Attribute。
【问题讨论】:
-
问题可能是缺少参考,或者 web.config 错误或类似的东西。
-
我不需要任何 web.config(因为它是自托管的和 Windows 服务)。 Nuget 应该已经加载了所有需要的依赖项。这似乎是完整的。
-
什么是Plugin.WebService,为什么找不到?这就是错误引导你的方向。这就是为什么我认为它与这段代码无关。
-
PlugIn.Webservice 是一个简单的 Dll,使用
Assembly.Load...动态加载。调用webApiDisposable = WebApp.Start<Startup>(url: baseAddress);的方法是我们系统的核心。 -
它正在尝试加载该 DLL 并失败。您需要弄清楚为什么它无法加载该 DLL。以及为什么它认为它需要那个 DLL。我现在会删除对它的依赖,看看它是否有效,然后将其添加回来。
标签: c# asp.net-web-api owin