【问题标题】:How to fix HTTP Error 403.14 - Forbidden如何修复 HTTP 错误 403.14 - 禁止
【发布时间】:2017-08-02 17:01:31
【问题描述】:

我正在尝试开发一个网络应用程序,这是我的第一个网络应用程序。我收到此错误:

HTTP 错误 403.14 - 禁止 Web 服务器配置为不列出此目录的内容。

如何配置网络服务器?我什至不知道它在说什么目录。

该应用程序正在尝试转到此处:http://localhost:22025/

我尝试搜索,但相关信息很少。我在运行框中输入了inetmgr,但什么也没出现。所以我尝试安装 IIS 7.5,但它说我已经安装了更新的版本。

我发现它是 IIS express。我也找到了这个信息https://docs.microsoft.com/en-us/iis/extensions/using-iis-express/running-iis-express-from-the-command-line

但我不知道如何设置它。我打赌没有 exe,但即使我知道输出文件类型是什么,这仍然允许我在 ide 中调试吗?

我已经开发 Windows 应用程序超过 10 年,并且拥有扎实的编程知识,但是我不知道从哪里开始,甚至不知道要搜索什么样的教程。

编辑: https://github.com/Marvelous-Software/Challenge

编辑2: 当我开发一个 .net 类库时,我可以将它指向一个 exe 并测试该类。

AssemblyName.ClassName test;

test = new AssemblyName.ClassName();
test.SomeProperty = 1;
Console.WriteLine(test.SomeProperty); //If '1' display then the property worked
test.SomeMethod();

这是一个关于如何在 .net 中测试类库的示例。我想学习网络API。我该怎么做呢?如何运行代码?

【问题讨论】:

  • 您是否设置了网站的默认页面?我认为您可以在解决方案资源管理器中右键单击一个,例如“default.aspx”,并将其设置为“起始页”或类似内容。
  • 你正在创建哪种类型的 Web 应用程序,Web 表单,mvc,Web api,wcf 服务,asp.net 核心
  • 在 IIS 中,将默认文档类型添加到您的伴侣。
  • @Andrew - 有人通过 Github 提供了我的项目。如何找到默认页面?
  • @Abhishek - 它说项目类型下的类库

标签: c# iis


【解决方案1】:

访问 GitHub 链接后,我可以看到它是一个 Web API 项目,因为 Api/Controllers 中的控制器继承了 ApiController,您还可以在 WebApiConfig.cs 中看到路由

routeTemplate: "api/{controller}/{id}"

您需要在路由中提供控制器名称,以便 ping 控制器的默认路由变为

http://localhost:22025/api/ping

只是为了向您解释 403.14 的原因,正如其他答案中所说,您的应用程序需要一个默认文档来在默认路由上给出响应,即只是基本路径,通常 Web Api 并非如此,因为它们通常 不是为最终用户设计的,而是作为其他客户端的端点,它将向用户或其他 Api。

您可以找到Web Api here的文档

EDIT #1 - 基于 OP EDIT#2

虽然您可以通过将类库引用到 exe 来测试类库,但这并不是原始意义上的单元测试。最好使用 MSTest 之类的测试框架。更多信息可以找到here

希望有帮助

【讨论】:

  • 我试过 localhost:22025/api/ping 并收到“无法连接”。我编辑了原始问题以说明如何测试类库。我希望你能明白我在寻找什么。我真的想做点什么。如果我可以运行代码,我可以从中学习。如果我可以从中学习,我可以修改它。
  • @JohnMaher 在启动 Web 应用程序后出现了错误。我也相应地更新了答案
  • 忘记启动应用程序了!嗬!无论如何,生的更适合学习。我现在对学习比“更好”更感兴趣。如果我可以开始,我以后会更好。只是很难开始。现在我收到“{“消息”:“未找到与请求 URI 'localhost:22025/api/… 匹配的 HTTP 资源类型与名为 'png' 的控制器匹配。”}”我尝试了 localhost:22025/api/PingController,但这也不起作用.
  • @JohnMaher 我猜你在路线上有错字,试试 api/ping 就像localhost:22025/api/ping
【解决方案2】:

您的 Web 服务器(IIS 或 IIS Express)中缺少“默认文档”配置,这可以通过多种方式进行配置,每种方式都取决于您使用的 Web 框架。 microsoft ASP.NET 堆栈中最常见的是:

-WebForms:当你的项目中有很多扩展名为.aspx的文件时,通常称为Default.aspx、Index.aspx、Home.aspx。您可以尝试在浏览器中输入 http://localhost:22025/Default.aspx 或您想要的其他页面。如果可行,您可以按照本文https://blogs.iis.net/bills/how-to-add-a-default-document-with-iis7-web-config 中的描述配置 web.config 文件

-ASP.NET MVC:当您有名为 ModelControllersViews 的文件夹时,您可能有名为 HomeController 的 Controller。 MVC 中的默认约定是 HomeController,默认为 Action Index。因此,输入 http://localhost:22025/Home 之类的内容应该足以查看您的网站。

一旦您意识到您使用的是哪个框架,然后搜索“在 xxx 框架中配置默认​​文档”之类的内容以获取更多信息。

正如您打赌的那样,在 Web 应用程序中,您没有 exe 文件作为输出,实际上,您有一个完整的“输出目录”,在“Bin”文件夹中有一个主 .dll,其中包含您的 C# 编译内容地点;以及许多扩展名为 .js、.css、.jpg 和其他“静态”文件的文件按原样提供。

本材料应该是从零开始创建您的第一个 Web 应用程序的良好起点。 https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/getting-started

如果这对你有帮助,请告诉我, 祝你有美好的一天

编辑:对于 WebAPI 项目,您通常没有用户界面,并且它的工作方式与 @Abhishek Siddhu 回答的完全一样,您可以尝试使用 Postman 或 Fiddler 等调试工具来匹配操作中的另一个 http 动词。因为使用网络浏览器只能测试 Get 命名操作(带有 HttpGet 动词的操作)

【讨论】:

  • 这里没有aspx。称为 API、数据、实体和服务的文件夹。我实际上是在尝试修改一个现有的项目,我一直面临着添加一个安静的服务来检索邮政编码的挑战。我找到了关于什么是宁静意味着的文档,只是无法弄清楚如何将它与这个项目联系起来。我尝试运行它,这就是我收到错误的时候。
猜你喜欢
  • 2014-07-29
  • 1970-01-01
  • 2012-07-10
  • 2013-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
相关资源
最近更新 更多