小编Pau*_*mke的帖子

使用实体框架更新主键值

我正在尝试从实体框架中更新复合主键的一个值,并且我收到此错误:"属性'CustomerID'是对象的关键信息的一部分,无法修改."

这是我的代码:

Dim customer As Customer = (From c In db.Customer Where c.CustomerID = "xxx" AndAlso c.SiteKey = siteKey).FirstOrDefault
customer.CustomerID = "fasdfasdf"
db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)

这似乎太简单了.是否真的无法在实体框架内更新主键?我找不到有关该主题的任何文档.谢谢!

.net vb.net sql-server entity-framework

50
推荐指数
3
解决办法
5万
查看次数

如何使用命令行msbuild部署VS2012网站项目而不进行预编译?

我继承了一个非常大的VS2012网站项目(不是Web应用程序),我正在尝试自动化它的部署.项目中有大量的循环引用,所以要使用aspnet_compiler.exe进行预编译我必须打开fixednames.问题是它导致我的四核,16gb ram,ssd开发者机器上的构建需要大约20分钟.之前的开发人员不必处理这个问题,因为他只是将整个源代码复制到生产Web服务器上.

所以在我解决循环引用问题之前,我想至少使用msdeploy自动部署项目.我可以使用visual studio中的发布配置文件,它完全符合我的要求:

  1. 构建引用的DLL并将它们添加到项目中.
  2. web.config是否会转换.
  3. 甚至没有尝试构建网站,只是为我打包成一个zip文件.

我无法弄清楚我的生活是如何让MSBuild.exe做同样的事情!

MSBuild.exe WebProject.vs2012.sln /m /T:Build 
    /p:Configuration=Release`;DeployOnBuild=true`;PublishProfile=TestDeploy
Run Code Online (Sandbox Code Playgroud)

上面的命令仍然尝试执行aspnet_compiler,这不是我想要的.发布配置文件说不应该预编译...但在日志中我看到它正在执行它.

那么:如何在不预编译的情况下使用msbuild部署网站项目?

asp.net msbuild vs-web-site-project msdeploy visual-studio-2012

35
推荐指数
1
解决办法
5万
查看次数

创建实体框架的实例在负载下减慢速度

我们注意到一些非常小的Web服务调用花费的时间比我们预期的要长.我们做了一些调查并安排了一些定时器,我们将其缩小到创建我们的Entity Framework 6 DbContext的实例.不是查询本身,只是创建上下文.我已经把一些日志记录平均看到创建一个DbContext实例需要多长时间,它似乎是大约50ms.

应用程序预热后,上下文创建速度不慢.应用程序回收后,它开始时间为2-4毫秒(这是我们在开发环境中看到的).上下文创建似乎随着时间的推移而变慢.在接下来的几个小时内,它将爬升到50-80ms的范围并保持平稳.

我们的上下文是一个相当大的代码优先上下文,包含大约300个实体 - 包括一些实体之间的一些非常复杂的关系.我们正在运行EF 6.1.3.我们正在执行"每个请求一个上下文",但对于我们的大多数Web API调用,它只执行一个或两个查询.创建一个60 + ms的上下文,然后执行1ms的查询有点不满意.我们每分钟有大约10k个请求,所以我们不是一个很少使用的网站.

这是我们所看到的快照.时间在MS,最重要的是部署回收app域.每行是4个不同的Web服务器之一.请注意,它并不总是相同的服务器.

在此输入图像描述

我确实采取了内存转储尝试充实了正在发生的事情,这里是堆统计信息:

00007ffadddd1d60    70821      2266272 System.Reflection.Emit.GenericFieldInfo
00007ffae02e88a8    29885      2390800 System.Linq.Enumerable+WhereSelectListIterator`2[[NewRelic.Agent.Core.WireModels.MetricDataWireModel, NewRelic.Agent.Core],[System.Single, mscorlib]]
00007ffadda7c1a0     1462      2654992 System.Collections.Concurrent.ConcurrentDictionary`2+Node[[System.Object, mscorlib],[System.Object, mscorlib]][]
00007ffadd4eccf8    83298      2715168 System.RuntimeType[]
00007ffadd4e37c8    24667      2762704 System.Reflection.Emit.DynamicMethod
00007ffadd573180    30013      3121352 System.Web.Caching.CacheEntry
00007ffadd2dc5b8    35089      3348512 System.String[]
00007ffadd6734b8    35233      3382368 System.RuntimeMethodInfoStub
00007ffadddbf0a0    24667      3749384 System.Reflection.Emit.DynamicILGenerator
00007ffae04491d8    67611      4327104 System.Data.Entity.Core.Metadata.Edm.MetadataProperty
00007ffadd4edaf0    57264      4581120 System.Signature
00007ffadd4dfa18   204161      4899864 System.RuntimeMethodHandle
00007ffadd4ee2c0    41900      5028000 System.Reflection.RuntimeParameterInfo
00007ffae0c9e990    21560      5346880 System.Data.SqlClient._SqlMetaData
00007ffae0442398    79504      5724288 System.Data.Entity.Core.Metadata.Edm.TypeUsage
00007ffadd432898    88807 …
Run Code Online (Sandbox Code Playgroud)

c# asp.net performance entity-framework entity-framework-6

23
推荐指数
1
解决办法
1437
查看次数

将大整数压缩为最小的可能字符串

我有一堆10位数的整数,我在URL中传递.类似于:"4294965286","2292964213".它们总是积极的,总是10位数.

我想将这些整数压缩成可以在URL中使用的最小可能形式(也就是字母和数字完全正常),然后在以后解压缩它们.我已经看过使用gzipstream,但它创建了更大的字符串,而不是更短.

我目前正在使用asp.net,所以vb.net或c#解决方案是最好的.

谢谢

c# vb.net compression asp.net

18
推荐指数
3
解决办法
2万
查看次数

Asp.net随机停止服从表单身份验证白名单

问题

上个月,我们将asp.net网站服务器从Server 2008 R2迁移到Server 2012 R2并升级到asp.net 4.5.我们正在使用cookied表单身份验证来防止未经授权访问该网站.

<authorization>
  <deny users="?" />
  <allow users="*" />
</authorization>
Run Code Online (Sandbox Code Playgroud)

我们在web.config中列出了白名单的某些资产和页面(例如:登录页面):

<location path="signin">
   <system.web>
     <authorization>
       <allow users="*" />
     </authorization>
   </system.web>
</location>
Run Code Online (Sandbox Code Playgroud)

在过去的几个月里,我们一直注意到IIS/Asp.net随机停止遵守白名单并假设所有内容都需要进行身份验证.对该服务器上的站点的所有请求都将重定向到登录页面,然后会引发500错误.不能检索列入白名单的资产.

事件查看器中有2个错误,我们可以在IIS混乱时看到这些错误.首先:

Exception type: NullReferenceException 
    Exception message: Object reference not set to an instance of an object.
   at System.Web.PipelineModuleStepContainer.GetNextEvent(RequestNotification notification, Boolean isPostEvent, Int32 eventIndex)
   at System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)
   at System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)
   at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
Run Code Online (Sandbox Code Playgroud)

第二个不会一直出现:

Event code: 4005 
Event message: Forms authentication failed for the request. Reason: The ticket supplied has …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net iis forms-authentication

16
推荐指数
1
解决办法
1306
查看次数

在为ASP.net构建期间缩小内联JavaScript?

我们有一些ASP.net页面,其中包含超过50行特定于该页面的JavaScript.我们想在CruiseControl构建过程中缩小javascript.

我们已经使用YUI Compressor来压缩我们的完整javascript和css文件.但我们无法弄清楚如何进行内联javascript.

是否有一个MSBuild任务来旋转asp.net页面并缩小javascript?

javascript asp.net msbuild minify yui-compressor

7
推荐指数
1
解决办法
4880
查看次数

在大型预编译的Asp.net网站项目中出现错误CS0433

背景

我接手了一个非常大的asp.net网站项目.旧的部署过程是将.cs,.aspx和.ascx文件复制到IIS并使其动态构建.我想预编译它并使用TeamCity自动部署它.我已经完成了一些其他网站项目.

该项目有大约350个用户控件,这些控件在文件夹中组织得很好,但在整个地方都可以使用.从其他文件夹引用的控件,彼此...基本上是循环文件引用的噩梦.

我的尝试

我的第一次尝试是像其他人一样建立它.MS建立整个vs2012解决方案.我遇到了大量"不允许循环文件引用".来发现所有这些组织良好的控件在任何地方都使用,并且有循环引用到处都是.我读了这个,然后我将"web.config"切换为compilation batch="false",然后在构建中将网站设置为"不可更新"和"使用固定命名程序集".该网站构建,但在我的四核,ssd,16gb ram开发框上编译需要25分钟.这是不可接受的构建时间.

我知道,如果我关闭"使用固定命名程序集",该网站将以更快的速度构建.(我已经在一个较小的网站上证明了这一点.它从4分钟到45秒).当我删除该设置时,我得到了奇怪的构建错误:

c:\Projects\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll'

c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_site.master.cdcab7d2.0.cs(927): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_xa514so5.dll'

error ASPPARSE: c:\Projects\web\Web\UserControls\Modules\JobsLeftMenu.ascx(128): error CS0433: The type 'ASP.usercontrols_modules_imagesgallerymodule_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_imagesgallerymodule.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_nvrj33tx.dll'

error ASPPARSE: c:\Projects\web\Web\Site.master(146): error CS0433: The type 'ASP.usercontrols_modules_viewprofilepopup_ascx' exists in both 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\web\8d37b2c6\4c39f0a\App_Web_viewprofilepopup.ascx.4101713c.dll' and 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary …
Run Code Online (Sandbox Code Playgroud)

asp.net msbuild .net-4.0 visual-studio-2012

7
推荐指数
1
解决办法
2840
查看次数

参考2 dll在vb.net 3.5项目中使用相同的命名空间?

我有一个vb.net 3.5类库项目,需要引用具有相同命名空间的两个程序集.我们有两个第三方dll,其中一个是5.1版,另一个是6.1版.它们具有相同的dll文件名,并且它们使用相同的命名空间和函数/类名.项目需要根据具体情况使用其中一种.

我已经研究了ac#process,它使用"extern别名"功能来引入不同的程序集.

http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx

Visual Studio 8中程序集引用的Aliases属性有何用处

似乎这个功能并不完全适用于vb.net.

我试过的事情

我已经重命名了第二个dll并添加了对我项目的两个引用.在这一点上,我得到了大量的: 'blah' is ambiguous in the namespace.

所以我需要别名不同的版本.在vb.net中,您可以在import语句中执行别名,例如:

Imports version5 = Somedll.Something
Run Code Online (Sandbox Code Playgroud)

问题是我无法为不同版本的dll设置程序集引用别名.显然在vb.net中,您无法在引用属性窗口中设置它们.所以我尝试在我的项目文件中设置它们,如下所示:

<Reference Include="somedll.5.Navigation">
  <HintPath>..\..\Utility\ThirdPartyDLLS\somedll.5.dll</HintPath>
      <Aliases>SomeDLL5</Aliases>
      <Private>False</Private>
</Reference>
<Reference Include="somedll.6.Navigation, Version=6.1.0.0, Culture=neutral, PublicKeyToken=6d02be8724ca751c, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\..\Utility\ThirdPartyDLLS\somedll.6.dll</HintPath>
      <Aliases>SomeDLL6</Aliases>
      <Private>False</Private>
</Reference>
Run Code Online (Sandbox Code Playgroud)

我希望这可以工作:

Imports version5 = SomeDLL5.Something
Imports version6 = SomeDLL6.Something
Run Code Online (Sandbox Code Playgroud)

但是"SomeDLL5/6"并没有出现在intellisense中.那么如何在同一个项目中引用两个dll呢?

.net vb.net dll namespaces .net-3.5

6
推荐指数
1
解决办法
4778
查看次数

ISAPI在IIS Express上重写

随着Visual Studio 2010 SP1和IIS Express的发布,我们希望在我们的本地开发机器上运行我们的asp.net 3.5网站而不是我们的iis5实例.

除了使用ISAPI Rewrite的url重写规则之外,我们所有的代码都运行良好.我们选择ISAPI_Rewrite 3,因为它与apache .htaccess文件非常相似.

我们如何在iis express中使用ISAPI Rewrite?

asp.net iis isapi-rewrite url-rewriting iis-express

5
推荐指数
1
解决办法
1966
查看次数

是否可以在select语句Cassandra中的where子句之后传递任何其他列

我一直在尝试使用此命令从Cassandra数据库中检索数据:

 select A_NO from Activity where CALL_TYPE IN ('MOC');//here CALL_TYPE is not the row id
Run Code Online (Sandbox Code Playgroud)

但它显示:

Expected key 'KEY' to be present in where clause for 'Activity'
Run Code Online (Sandbox Code Playgroud)

在cassandra中是否有可能借助非主键过滤数据?

select cql primary-key where cassandra

5
推荐指数
1
解决办法
1132
查看次数