我按照this example创建了我的第一个Owin web page
:
WebApplication1
。工具 - > Nuget包管理器 - > 包管理器控制台
PM> Install-Package microsoft.owin.host.SystemWeb
我现在可以看到owin参考。 3. 添加 - > 新项目 - > Owin启动课程并输入代码段:
using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(WebApplication1.Startup1))]
namespace WebApplication1
{
public class Startup1
{
public void Configuration(IAppBuilder app)
{
// For more information on how to configure your application, visit http://go.microsoft.com/fwlink/?LinkID=316888
app.Run(context =>
{
context.Response.ContentType = "text/plain";
return context.Response.WriteAsync("Hello, world.");
});
}
}
}
好的,现在我按Ctrl + F5启动,它会启动一个IE浏览器。不幸的是,该页面显示Web应用程序中存在一些错误:
HTTP错误403.14 - 禁止
Web服务器配置为不列出此目录的内容。
最有可能的原因: •未为请求的URL配置默认文档,并且未在服务器上启用目录浏览。
你可以尝试的事情: •如果您不想启用目录浏览,请确保已配置默认文档并且该文件存在。 •启用目录浏览。 1.转到IIS Express安装目录。 2.运行appcmd set config /section:system.webServer/directoryBrowse / enabled:true以启用服务器级别的目录浏览。 3.运行appcmd set config [“SITE_NAME”] / section:system.webServer/directoryBrowse / enabled:true以启用站点级别的目录浏览。
•验证站点或应用程序配置文件中的configuration/system.webServer/directoryBrowse@enabled属性是否设置为true。
详细错误信息:
模块 DirectoryListingModule
通知 ExecuteRequestHandler
处理程序 StaticFile
错误代码 0x00000000
请求的网址 http://localhost:50598/
物理路径 D:\ Documents \ Visual Studio 2013 \ Projects \ WebApplication1
匿名
登录用户 匿名
请求跟踪目录 D:\ Documents \ IISExpress \ TraceLogFiles \ WEBAPPLICATION1
更多信息: 如果未在URL中指定文档,未为网站或应用程序指定默认文档,并且未对网站或应用程序启用目录列表,则会发生此错误。可以有意禁用此设置以保护服务器的内容。 查看更多信息»
在我的所有步骤中,我有什么错过或错误的投入吗?如何使它工作?
答案 0 :(得分:3)
你的例子适合我。我无法重现你的错误。似乎有些东西配置错误。也许尝试检查一些现有答案here和here。我包括我的步骤对我来说非常好,所以你可以仔细检查你的解决方案。
安装Microsoft.Owin.Host.SystemWeb包:
PM> install-package microsoft.owin.host.systemweb
右键单击解决方案资源管理器中的项目>添加>分类并命名为Startup.cs
插入您的owin中间件
这就是我班级的样子:
using Owin;
namespace WebApplication2
{
public class Startup
{
public static void Configuration(IAppBuilder app)
{
app.Use(async (ctx, next) =>
{
await ctx.Response.WriteAsync("Test");
});
}
}
}
为了确保,我还包括 packages.config :
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
<package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
<package id="Microsoft.Owin" version="3.0.1" targetFramework="net452" />
<package id="Microsoft.Owin.Host.SystemWeb" version="3.0.1" targetFramework="net452" />
<package id="Owin" version="1.0" targetFramework="net452" />
</packages>
..和 web.config :
<?xml version="1.0" encoding="utf-8"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.5.2"/>
<httpRuntime targetFramework="4.5.2"/>
</system.web>
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>
<compiler language="vb;vbs;visualbasic;vbscript" extension=".vb"
type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
</configuration>
我完全没有别的。这是我采取的唯一步骤。你可以比较并想出差异。