发布到服务器iis时,Asp.net web api返回404

时间:2018-01-22 04:28:07

标签: c# asp.net-mvc iis asp.net-web-api

我想玩asp.net web api。随着简单的网站,然后我创建asp.net webform类型web api并在我的本地机器上运行然后我尝试发布这个项目与自定义检查我的iis服务器。但它返回“403 - 禁止访问:拒绝访问。”

http://localhost:51845/

enter image description here

这是我的设置iis与我的机器中的相同项目

enter image description here

服务器:8080(我将我的IP服务器更换为服务器)

enter image description here

它与我的机器和服务器机器有相同的错误,有什么问题?请帮忙。感谢

句话 这个项目认证 - >没有Auth这样的

enter image description here

我的网络配置代码

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=301879
  -->
<configuration>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0"/>
    <add key="webpages:Enabled" value="false"/>
    <add key="ClientValidationEnabled" value="true"/>
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/>
  </appSettings>
  <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5" />
      </system.Web>
  -->
  <system.web>
    <compilation debug="true" targetFramework="4.5"/>
    <httpRuntime/>
    <pages controlRenderingCompatibilityVersion="4.0"/>
  </system.web>
  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
      <remove name="OPTIONSVerbHandler"/>
      <remove name="TRACEVerbHandler"/>
      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
    </handlers>
  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-5.0.0.0" newVersion="5.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0"/>
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35"/>
        <bindingRedirect oldVersion="1.0.0.0-1.5.2.14234" newVersion="1.5.2.14234"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

4 个答案:

答案 0 :(得分:1)

  1. 按win + R
  2. 写&#34; InetMgr&#34;然后按enter按钮
  3. 右键点击您的网站,然后点击&#34; EditBindings&#34;
  4. 将端口更改为51845,然后保存
  5. 将您的项目发布到网站位置(右键点击您的             网站并点击探索)
  6. 浏览http://localhost:51845/

答案 1 :(得分:0)

如果您需要表单身份验证,但该模块未运行,IIS只会出现403错误,因为它无法让您获得应用程序所需的身份验证。

因此,您可以尝试在应用程序的Web.config中设置“为所有请求运行所有受管模块”选项

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true"></modules>
    <handlers>
      <remove name="UrlRoutingHandler"/>
    </handlers>
  </system.webServer>

答案 2 :(得分:0)

您可以检查发布APP的文件夹是否具有IIS权限。您可以尝试在文件夹的安全属性中为“everyone”授予权限。

如果没有,请检查ISS上WebAPI的web.config并仔细检查身份验证值和配置。

答案 3 :(得分:0)

发布时,如果选择“将所有输出合并为单个程序集”,则必须设置名称,不能使用空格或特殊字符 我有此错误,我可以通过此解决方案解决 祝你好运