【问题标题】:Asp.net web api return 404 when publish to server iis发布到服务器 iis 时,Asp.net web api 返回 404
【发布时间】:2018-06-30 16:14:15
【问题描述】:

我想玩asp.net web api。使用简单的网站然后我创建 asp.net webform 类型的 web api 并在我的本地机器上运行它然后我尝试发布这个项目而不进行自定义以签入我的 iis 服务器。但它返回 "403 - Forbidden: Access is denied."

http://localhost:51845/

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

server:8080(我将我的 ip 服务器替换为服务器)

然后我的机器和服务器机器出现同样的错误,怎么了?请帮忙。谢谢

备注 此项目身份验证 -> 没有这样的身份验证

我的网络配置代码

<?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>

【问题讨论】:

  • 这与 IIS 中的用户帐户权限(用于集成安全性)或身份验证角色(用于基于表单的身份验证)有关。检查当前用户帐户是否有足够的权限访问目标 URL 或页面。
  • @TetsuyaYamamoto 请再次检查。我没有在我的项目中进行身份验证。但是您认为这是因为身份验证而发生的,对吗?

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


【解决方案1】:

发布时如果选择合并所有输出单个程序集,则必须设置一个不带空格或特殊字符的名称 我有这个错误,我可以通过这个解决方案修复它 祝你好运

【讨论】:

    【解决方案2】:
    1. 按win+R
    2. 写“InetMgr”然后按回车键
    3. 右键单击您的站点并单击“EditBindings”
    4. 将端口改为51845然后保存
    5. 将您的项目发布到站点位置(右键单击您的 网站并点击探索)
    6. 浏览http://localhost:51845/

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 2011-07-21
        相关资源
        最近更新 更多