IIS会话在发布Web上丢失

凯尔五世

以前,使用Visual Studio 2012中的Web项目时,我可以单击“发布Web”按钮,并且只要我在大多数情况下都不会对会话数据保持任何状态下对任何.config或.cs文件进行任何更改,就可以每次对.css或.html文件进行小的更改时,都不必再次登录。

为了使w3wp.exe具有调试功能而弄乱了一些设置之后,即使我在发布之间绝对没有进行任何更改,每次单击Publish Web时,会话数据也会丢失。

我不知道该怎么做才能更改此设置,但确实需要能够对静态文件进行更改,而不必每次都登录。如何阻止会话被杀死?

恶作剧

这取决于您要发布的内容。即使您没有故意进行任何更改,在以下情况下,应用程序域也将卸载:

  • web.config 被再次复制(内容无关紧要)
  • bin 文件夹已被修改(同样,具有新时间戳的相同dll被视为已修改)

AFAIK,发布始终更新web.config我不确定的一件事是,web.config如果您没有任何转换(.debug.config或.release.config),它是否会更新

您可以尝试以下几种方法:

  • web.config的Build Action设置为“ None”。这样可以防止将其完全复制到输出中。

  • 定义一个新的构建配置,说“静态内容”。使用此构建配置,定义一个新的发布配置文件,例如“静态内容”。将这些行添加到您的.csproj文件

    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
      ... 
      <OutputPath>bin\</OutputPath> 
       <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> 
      <ExcludeFilesFromDeployment>web.config</ExcludeFilesFromDeployment> 
      <ExcludeFoldersFromDeployment>bin</ExcludeFoldersFromDeployment> 
    </PropertyGroup>
    

    这样可以防止这2个文件夹被部署,因此您的应用程序域将不会卸载,会话也不会丢失。而且,您仍然可以在需要时使用其他配置文件进行完整发布。

  • 在发布>设置>文件发布选项中,确保未选中“删除所有现有文件...”选项。

希望这些解决方法之一或全部可以解决您的问题。

更新:根据评论,这是一个简单的AfterBuild目标,该目标以递归方式将仅更改的文件复制到发布文件夹。只需将以下代码复制到您的.csproj文件中,并适当调整路径。

<!-- define static content to be copied over -->
<ItemGroup>
    <SourceFiles Include="CSS\**\*.css" />
    <SourceFiles Include="Scripts\**\*.js" />
 </ItemGroup>

<!-- The target that gets executed after build finishes and copies files recursively -->
<Target Name="AfterBuild">
    <Copy
        SourceFiles="@(SourceFiles)"
        DestinationFolder="C:\Publish\YourApp\%(RecursiveDir)"
        SkipUnchangedFiles="True"
    />
</Target>

现在,在构建时,您应该看到静态内容已发布到您的发布文件夹中。

笔记:

  • %(RecursiveDir)递归复制文件,这有助于重建文件夹树。如果您嵌套了文件夹,例如css\fonts和,则很有用css\images

  • Copy任务还有其他一些属性(例如ContinueOnErrorOverwriteReadOnlyFiles),您可能需要修改。

  • 您还可以在目标路径中使用标准的VS宏(例如$(SolutionRoot)$(OutputDir)等)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

IIS会话在发布Web上丢失

来自分类Dev

发布Web服务-IIS上的Web API 2

来自分类Dev

如何在IIS上配置Web Deploy发布功能,以便开发人员可以发布?

来自分类Dev

在IIS上发布umbraco网站

来自分类Dev

在 .net core 上发布后对象丢失

来自分类Dev

PHP会话无法在IIS 7.5上运行

来自分类Dev

IIS Web部署-发布时的临时页面

来自分类Dev

IIS Web部署-发布时的临时页面

来自分类Dev

在IIS上发布网站-分配名称

来自分类Dev

PHP返回上一页时丢失会话变量

来自分类Dev

会话存储在window.location.replace上丢失

来自分类Dev

在IE上重定向了domian的页面之间的会话对象丢失

来自分类Dev

JSF / primefaces会话-会话丢失

来自分类Dev

IIS上的ASP.NET Core粘性会话

来自分类Dev

博客发布者在Facebook上发布的博客文章,图片丢失

来自分类Dev

博客发布者在Facebook上发布的博客文章,图片丢失

来自分类Dev

如何在IIS 7上发布WCF服务

来自分类Dev

使用IIS在服务器上发布ASP Net网站

来自分类Dev

在IIS上发布后,WCF发现UDPEndpoint无法正常工作

来自分类Dev

在 IIS 上发布 ASP.NET MVC 应用程序

来自分类Dev

PHP会话丢失

来自分类Dev

在Dotnetnuke中丢失会话

来自分类Dev

ServiceStack“会话”丢失了吗?

来自分类Dev

在Facebook上发布的Web意向URL

来自分类Dev

数据不在Web服务上发布

来自分类Dev

如何使我的 IIS 上安装的已发布 Web 应用程序可以被另一台计算机访问

来自分类Dev

IIS会话下降,而不是配置了web.config并更改了IIS设置

来自分类Dev

在WCF Web服务上“跳过” IIS管道

来自分类Dev

IIS 上的 Web API 表示连接被拒绝