24

我有一个在 cassini 下运行良好的 asp.net 4.0 应用程序,但是当我部署到 IIS 时出现上述错误。它在默认应用程序池下运行,许多其他应用程序使用并正常工作。这是我的网络配置的副本,可能是来源:

<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->

<configuration>
  <connectionStrings>
    <add name="FMLconnect" connectionString="Server=192.168.20.125;Port=;Database=FML;Uid=******;Pwd=*****;pooling=false;" providerName="MySql.Data.MySqlClient"  />
  </connectionStrings>

  <system.web>
    <httpHandlers>
      <add path="ChartImg.axd" verb="GET,HEAD,POST" type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
      <add path="ChartImage.axd" type="Telerik.Web.UI.ChartHttpHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.SpellCheckHandler.axd" type="Telerik.Web.UI.SpellCheckHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.DialogHandler.aspx" type="Telerik.Web.UI.DialogHandler" verb="*" validate="false"/>
      <add path="Telerik.RadUploadProgressHandler.ashx" type="Telerik.Web.UI.RadUploadProgressHandler" verb="*" validate="false"/>
      <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
      <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" validate="false"/>
      <add type="Telerik.ReportViewer.WebForms.HttpHandler, Telerik.ReportViewer.WebForms, Version=5.1.11.928, Culture=neutral, PublicKeyToken=a9d7983dfcc261be" path="Telerik.ReportViewer.axd" verb="*" validate="true"/>
    </httpHandlers>
    <compilation debug="true" targetFramework="4.0" >
      <assemblies>
        <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <!--<add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>-->
        <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>




  </system.web>

  <system.webServer>
       <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>
4

16 回答 16

14

使用 IIS,这听起来就像您需要在 IIS Admin 中检查您的应用程序的身份验证设置。试试这个链接: http: //support.microsoft.com/kb/253667

这是针对 IIS6 的,您没有提到您使用的是 IIS 6 还是 7。对于 IIS 7,请尝试以下操作:http: //support.microsoft.com/kb/942043

于 2012-09-28T13:03:14.167 回答
9

如果您使用 IIS Express,请检查 web.config

        <!--  AUTHENTICATION 
      This section sets the authentication policies of the application. Possible modes are "Windows", 
      "Forms", "Passport" and "None"
-->
    <authentication mode="Windows"/>
    <identity impersonate="true"/>
    <!--  AUTHORIZATION 
      This section sets the authorization policies of the application. You can allow or deny access
      to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous 
      (unauthenticated) users.
-->
    <!--<authorization>
        <deny users="?"/>-->
        <!-- Allow all users -->
        <!--  <allow     users="[comma separated list of users]"
                         roles="[comma separated list of roles]"/>
              <deny      users="[comma separated list of users]"
                         roles="[comma separated list of roles]"/>
        -->
    <!--</authorization>-->
于 2014-04-24T15:26:31.503 回答
8

我将 VS2012 项目升级到 2013 并将项目属性从 Windows 身份验证从启用更改为禁用,然后我收到此错误。简单的改变解决了这个问题。转到解决方案并单击属性以更改此设置。

如果您使用的是 IISExpress,那么这些行应该类似于:

<IISExpressAnonymousAuthentication>disabled</IISExpressAnonymousAuthentication>
<IISExpressWindowsAuthentication>enabled</IISExpressWindowsAuthentication>
于 2014-07-15T08:48:57.957 回答
8

我刚才也有同样的问题。我发现的修复都没有奏效,所以我会在这里发布以防它对某人有所帮助。

对我来说,问题是这样解决的:

  • 打开 IIS 管理器
  • 选择“应用程序池”
  • 右键单击您正在使用的应用程序池,然后选择“高级设置”
  • 将“启用 32 位应用程序”设置为“真”
  • 单击“确定”关闭对话框
  • 再次右键单击应用程序池并选择“回收”

希望这会帮助别人!这让我发疯了。

于 2016-02-10T17:31:55.010 回答
6

This always happens to our project after it's reloaded. enter image description here

If you're using Windows Authentication, the problem might be as simple as updating your project properties to Enable Windows Authentication.

In Visual Studio, get to your project properties (I usually right-click a file > properties to open the properties window. Then click on my project). Make sure Windows Authentication is set to Enabled

于 2020-06-24T16:11:27.847 回答
5

尝试这个:

  • 打开 IIS 管理器
  • 在连接栏中单击您的 Web 服务器(即服务器本身;不是站点)。
  • 从 IIS 部分中选择身份验证。
  • 根据需要启用协议。此处禁用的任何内容将无法用于此服务器上托管的站点;此处启用的任何内容都将使用各个站点的设置。
  • 重新启动 IIS ( start, run, cmd(以管理员身份运行), iisreset -noforce)
于 2014-06-16T16:27:15.530 回答
2

这可能是一个非常晚的答案,但我的问题是错误配置的发布配置文件(使用 Web 部署)。一旦我取消选择该Precompile during publishing选项(如下)并重新发布,它就会恢复正常并且我能够访问它。

我还尝试了几次激活/停用它,并确认这是唯一的原因。当我再次激活它时问题出现了,当我取消选中它时问题消失了。

在此处输入图像描述

老实说,我仍然没有解释这个选项究竟有什么影响以及为什么它会导致这样的问题。我发现了这个问题,但我仍在调查。

于 2014-06-26T13:19:08.740 回答
2

如果您使用的是 Windows 身份验证,则可能是您的授权设置。打开 web.config 文件:

  <system.web>
    <authentication mode="Windows"></authentication>
    <identity impersonate="false" />
    <authorization>
        <allow roles="domain_name1\group_name1,domain_name2\group_name2" />
      <deny users="*" />
    </authorization>

确保您分配了正确的角色。如果您需要包括所有用户,请使用:

<allow users="*" />
于 2019-12-18T18:07:10.293 回答
2

对我来说,我不得不从“属性”面板更改设置来解决这个问题。选择项目并点击 F4(菜单:View->Properties Window)并相应地设置属性。

Visual Studio 2015 - 属性面板屏幕截图

希望这可以帮助!

于 2018-07-24T15:11:48.653 回答
1

我通过使用以下说明将 BackConnectionHostNames 添加到注册表来解决 401.1 和 401.2 身份验证错误:https: //support.microsoft.com/en-us/help/896861/you-receive-error-401-1-when-you-browse -a-web-site-that-uses-integrate(方法 1)

  1. 单击开始,单击运行,键入 regedit,然后单击确定。
  2. 在注册表编辑器中,找到并单击以下注册表项:
  3. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0
  4. 右键单击 MSV1_0,指向新建,然后单击多字符串值。
  5. 键入 BackConnectionHostNames,然后按 Enter。
  6. 右键单击 BackConnectionHostNames,然后单击修改。
  7. 在数值数据框中,键入本地计算机上站点的主机名或主机名,然后单击确定。
  8. 退出注册表编辑器,然后重新启动 IISAdmin 服务。

这些错误发生在运行版本 1803 的 Windows 10 Professional 安装上,该域的名称与我尝试验证的站点不同。

于 2018-10-11T14:50:58.457 回答
1

我有一个类似的问题,并通过在 web.config 中将optimizeCollections设置为false并在验证它是否有效后立即恢复更改来解决它。

  <system.web>
    ..
    <compilation debug="true" targetFramework="4.7.1" optimizeCompilations="false" />
    ..
  </system.web>

通过删除 asp.net 临时文件夹也许可以实现同样的事情。

于 2018-12-18T06:24:29.153 回答
1

对我有帮助的是在 web.config 中注释掉以下行

<system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5" />
    <!--  
    <authentication mode="Windows" /> 
    <authorization>
        <deny users="?" />
    </authorization>
    <identity impersonate="false" />
    -->
    <customErrors mode="Off" />
</system.web>
于 2019-03-22T14:46:17.447 回答
0
  1. 在解决方案资源管理器中单击您的项目以选择该项目。

  2. F4(对于属性)。

  3. 在项目的“属性”窗格中:

    1. 将“匿名身份验证”设置为“禁用”。
    2. 将“Windows 身份验证”设置为“启用”。

然后运行项目。

于 2022-02-20T15:59:06.520 回答
0

如果它是基于 Windows 身份验证的应用程序,则在 IIS 中为您的站点启用 Windows 身份验证并禁用匿名身份验证。

于 2019-06-17T04:23:56.267 回答
0

尝试在IIS Express下运行现有的ASP.NET WebForms应用程序时,我也遇到了这个错误(但这可能也适用于IIS)。

该应用程序在 applicationhost.config 中配置使用Clr4IntegratedAppPool应用程序池。将applicationPool属性更改为Clr4ClassicAppPool为我解决了这个问题。

于 2015-11-17T02:59:00.800 回答
0

我有同样的错误,应用程序在本地运行良好,但从 IIS 运行时出现未经授权的错误。我尝试了几种方法,但没有运气。我终于使用了以下方法:

我使用的是匿名身份验证,它无法正常工作,因为它无法找到代码文件的路径。因此,我将 Windows 身份验证设置为 True 和 VOILA!有效。

您可以通过单击左侧窗格中的应用程序名称来找到 Windows 身份验证 - 选择身份验证 - Windows 身份验证(设置为启用)。

此外,如果您无法在此处微调 Windows 身份验证,则需要从控制面板 - 程序功能 - 打开或关闭 Windows 功能 - IIS - 万维网服务 - 安全 - Windows 身份验证中选择它(检查它)。现在转到 IIS,你会找到它。

于 2020-11-17T09:34:28.670 回答