当这看起来很简单并且有很多关于字符串/字符/正则表达式的问题时,我觉得有点愚蠢的发帖,但我找不到我需要的东西(除了另一种语言:删除所有文本后某些点).
我有以下代码:
[Test]
public void stringManipulation()
{
String filename = "testpage.aspx";
String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue";
String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", "");
String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length - filename.Length);
String expected = "http://localhost:2000/somefolder/myrep/";
String actual = urlWithoutPageName;
Assert.AreEqual(expected, actual);
}
Run Code Online (Sandbox Code Playgroud)
我在上面的问题中尝试了解决方案(希望语法是相同的!)但不是.我想首先删除queryString,它可以是任何可变长度,然后删除页面名称,也可以是任何长度.
如何从完整的URL中删除查询字符串,以便此测试通过?
我知道这几乎是重复的:错误"登录失败,用户NT AUTHORITY\IUSR""在ASP.NET和SQL Server 2008和用户登录失败"用户名" -在外部System.Data.SqlClient.SqlException与LINQ项目/类库但有些东西与我服务器上的其他应用程序相比并没有加起来,我不知道为什么.
正在使用的盒子:
Web Box
SQL框
SQL测试框
我的应用程序:
我有一个ASP.NET Web应用程序,它引用了一个使用LINQ-to-SQL的类库.连接字符串在类库中正确设置.按照在外部项目/类库System.Data.SqlClient.SqlException与LINQ -用户登录失败"用户名"我还添加了此连接字符串的Web应用程序.
连接字符串使用SQL凭据(在Web应用程序和类库中):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
此连接通过将其添加到服务器资源管理器确认为正常工作.这是我的.dbml文件正在使用的连接字符串.
问题:
我收到以下错误:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Run Code Online (Sandbox Code Playgroud)
现在引用ASP.NET和SQL Server 2008中的错误"登录失败的用户'NT AUTHORITY\IUSR'"它说真的是本地网络服务并且使用任何其他非域名都不起作用.
但我很困惑,因为我检查了SQL Box和SQL Test Box SQL Management Studio,并且都NT AUTHORITY/NETWORK SERVICE在安全 - >登录,在数据库级别,未列在安全 - >用户下,但在数据库级别安全 - >用户我将用户显示在连接字符串中.
在Web服务器上的NTFS级别,权限使NETWORK SERVICE具有完全控制权.
我之所以感到困惑,是因为我的Web服务器上有许多其他Web应用程序,它们在SQL Box和SQL Test Box上引用数据库,它们都可以工作.但除了我使用类库之外,我找不到它们和我当前的应用程序之间的区别.那会有关系吗?检查NTFS权限,服务器和数据库级别的安全登录设置,连接字符串和连接方法(SQL Server凭据)以及IIS应用程序池和其他文件夹选项都是相同的.
为什么这些应用程序在没有将machinename $添加到我的任何一个SQL框的权限的情况下工作?但这就是一个链接告诉我要解决这个问题的方法.
我已经看到了这个:VSTS 2010 SGEN:错误:无法加载文件或程序集(HRESULT的异常:0x80131515)并且没有任何答案有效.当我构建或任何东西时它也不会出现.我可以运行该项目,当我尝试添加一个实体框架模板控制器时会发生这种情况:

然后我收到这个错误:

所有项目文件都在我的网络共享上,因为这是我的文档所在的工作所在.这是我尝试过的:
1)将项目设置中的发电机序列化装配转为开,关和自动.
2)使用以下代码将sgen.exe.config添加到C:\ Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0工具:
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
3)尝试取消阻止程序集,但我在属性选项卡中没有取消阻止选项.

这些解决方案都不起作用.有谁知道如何解决这个问题??? 对于来自nuget或我自己的项目的任何自定义程序集,由于它们在网络空间中的位置而发生此错误,但仅在尝试添加EF模板控制器时发生.我可以构建并运行程序.
我安装了elmah.mvc nuget软件包并保留了默认配置,即设置发送电子邮件并将其插入SQL数据库.
在我使用Visual Studio主机的本地计算机上,我可以打开我的应用程序并访问/ elmah罚款以查看错误报告.但是,当我尝试访问/ elmah生产时,我得到两个错误,首先我收到403 access is denied服务器错误.然后在我的电子邮件中(来自elmah)我得到:
System.Web.HttpException: Server cannot set status after HTTP headers have been sent.
Run Code Online (Sandbox Code Playgroud)
任何人都知道这里发生了什么以及如何解决?谢谢.
到目前为止,我尝试了以下答案的建议:
在 <system.webServer>
<handlers>
<add name="elmah" verb="GET" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah"/>
</handlers>
Run Code Online (Sandbox Code Playgroud)
并在 <system.web>
<httpHandlers>
<add verb="POST,GET,HEAD" path="elmah.axd" type="Elmah.ErrorLogPageFactory, Elmah" />
</httpHandlers>
Run Code Online (Sandbox Code Playgroud)
我尝试将路径设置为两者elmah.axd并且简单~/elmah.所有仍然给出相同的错误,仍然在本地工作,但不在生产中.
编辑:它实际上也适用于我远程进入服务器并通过浏览器访问它(不使用localhost,但实际的站点地址).那么我没有什么许可?好像它是在服务器级别.
我已经看过几个关于这个的线程,我已经尝试了所有的答案(ASP.NET MVC JsonResult返回500)
我的ajax请求正在重新发送500内部错误.如果我调试我甚至从未接受过我的行动.
这是我的ajax电话:
$.ajax({
url: '@Url.Action("UpdateSortOrder", "FormItems")',
data: { itemToUpdateId: item.attr("id"), newParentItemId: parentItemId, newPreviousItemId: previousItemId },
type: 'POST',
success: function (data) {
console.log(data);
},
error: function (xhr, status, exception) {
console.log("Error: " + exception + ", Status: " + status);
}
});
Run Code Online (Sandbox Code Playgroud)
我的行动:
[HttpPost]
public ActionResult UpdateSortOrder(Guid itemToUpdateId, Guid newParentItemId, Guid newPreviousItemId)
{
FormItem updatedItem = _formItemService.GetOne(x => x.Id == itemToUpdateId);
return Json(updatedItem, JsonRequestBehavior.DenyGet);
}
Run Code Online (Sandbox Code Playgroud)
使用chrome控制台,这些是来自回复的响应标头:
HTTP/1.1 500内部服务器错误缓存控制:私有内容类型:text/html; charset = utf-8服务器:Microsoft-IIS/7.5 X-AspNetMvc-版本:3.0 X-AspNet-版本:4.0.30319 X-Powered-By:ASP.NET日期:星期二,2012年12月18日21:53:41 GMT内容长度:17041
服务器日志不显示子状态代码.知道我在这里做错了什么吗?我更喜欢使用POST而不是GET. …
每种方法有哪些优点/缺点?
我知道我已经在书籍或本网站的某处读过为什么使用表继承对于Entity Framework 4来说很糟糕.
例如,为什么不创建一个具有entityId,datecreated,datemodified的表,然后让其他所有类继承实体框架中的那个?然后我的所有其他实体的表不需要这些列.然后我可以让一个人类继承那个基类,然后一个特定的人继承人.
除了编写一个较小的SQL脚本来生成数据库之外,我不确定这个的好处......
我看到的缺点是,它直接在SQL中查询/查看数据是一个很大的痛苦(所有相关信息在这么多表中被打破),我也问过我的朋友说:
更改应用程序代码比更改和迁移数据库数据更容易,因为大多数经验不足的开发人员接近他们接受继承的问题.我第一次开始开发的时候也是这样做的.它在逻辑上是有道理的.但是,一旦开发很长一段时间,你就会发现委托是最好的方法(服务在soa的情况下调用服务),而且单一用途的服务提供了比继承更多的重用."
这对我来说也很有意义.
所以
1)一般来说,继承与扩展的利弊是什么
2)在上面的具体例子中,什么更合适?
3)如果我的例子对于其中一个或两个都很糟糕,那么使用继承和使用扩展的好例子是什么?
我之前使用过这两种情况,但由于我远没有经验丰富,我仍然不确定如何处理所有情况.
10个投票,8个收藏,超过100个观点,没有人可以扩展?=(.
.net inheritance entity-framework extending entity-framework-4
以前使用EF 4.3并在升级到5.0时我发现索引,FK约束和PK约束都将其命名约定更改为包含dbo(例如PK_Users现在变为PK_dbo.Users)
现在,每当我对模型进行更改并且需要更改包含这些内容的表时,它总是说它不能删除约束,因为它无法找到它.
我只是想要它,以便当它试图删除约束/索引/键时,它首先检查5.0之前的命名是否存在,如果是,则删除它,但仍然使用新的5.0命名约定重新创建它.
命名约定从4.3更改为5.0:
主键/索引
Old: PK_Users New: PK_dbo.Users
Run Code Online (Sandbox Code Playgroud)
外键
Old: FK_Users_Roles_Role_Id New: FK_dbo.Users_dbo.Roles_Role_Id
Run Code Online (Sandbox Code Playgroud)
注意:我不能简单地让EF重新生成所有表,我在这个数据库中有生产数据.我也不想为每个使用自定义迁移的表手动执行此操作.
编辑:我发现了一个类似的问题如何停止添加dbo的Entity Framework 5迁移.成为关键名称?但是这个家伙只是想忽略5.0惯例并坚持使用4.3,它只处理表重命名.我不希望这样做,因为后续版本的EF可能会导致更多的更改,这些更改会影响此代码并且只是麻烦.
我试着按照发布的答案做同样的事情:
public class CodeMigrator : CSharpMigrationCodeGenerator
{
protected override void Generate(
DropIndexOperation dropIndexOperation, IndentedTextWriter writer)
{
dropIndexOperation.Name = StripDbo(dropIndexOperation.Name);
base.Generate(dropIndexOperation, writer);
}
protected override void Generate(DropForeignKeyOperation dropForeignKeyOperation, IndentedTextWriter writer)
{
dropForeignKeyOperation.Name = StripDbo(dropForeignKeyOperation.Name);
base.Generate(dropForeignKeyOperation, writer);
}
protected override void Generate(DropPrimaryKeyOperation dropPrimaryKeyOperation, IndentedTextWriter writer)
{
dropPrimaryKeyOperation.Name = StripDbo(dropPrimaryKeyOperation.Name);
base.Generate(dropPrimaryKeyOperation, writer);
}
// TODO: Override other Generate overloads that involve table …Run Code Online (Sandbox Code Playgroud) c# entity-framework ef-code-first ef-migrations entity-framework-5
我想在更新面板中为文本区域使用富文本编辑器.
我发现这篇帖子:http://www.queness.com/post/212/10-jquery-and-non-jquery-javascript-rich-text-editors通过这个问题:需要ASP.Net/MVC富文本编辑器
决定使用TinyMCE,因为我之前在非AJAX情况下使用它,并且它在该列表中说它与AJAX兼容.好吧,我做了很好的' tinyMCE.init({ //settings here });
测试它,它在更新面板更新后消失了.我从这里的一个问题中找出它应该在page_load函数中,所以它甚至可以在异步回发上运行.好吧,这样做,面板停留.但是,在尝试从我的textarea提交值时,它的文本总是返回为空,因为我的表单验证器总是说"你必须输入描述",即使我在其中输入文本.这是在页面第一次加载以及对页面执行异步回发之后发生的.
好吧,我发现这个http://www.dallasjclark.com/using-tinymce-with-ajax/并且不能从同一个AJAX TinyMCE textarea发布两次.我尝试在tinyMCE.init之后立即将此代码添加到我的页面加载函数中.这样做会破坏我之后在page_load中调用的所有jquery,它仍然存在同样的问题.
我仍然是客户端脚本编写的初学者,所以也许我需要将代码放在与page_load不同的位置?不确定我链接的帖子不知道放置代码的位置.
我的Javascript:
<script type="text/javascript">
var redirectUrl = '<%= redirectUrl %>';
function pageLoad() {
tinyMCE.init({
mode: "exact",
elements: "ctl00_mainContent_tbDescription",
theme: "advanced",
plugins: "table,advhr,advimage,iespell,insertdatetime,preview,searchreplace,print,contextmenu,paste,fullscreen",
theme_advanced_buttons1_add_before: "preview,separator",
theme_advanced_buttons1: "bold,italic,underline,separator,justifyleft,justifycenter,justifyright, justifyfull,bullist,numlist,undo,redo,link,unlink,separator,styleselect,formatselect",
theme_advanced_buttons2: "cut,copy,paste,pastetext,pasteword,separator,removeformat,cleanup,charmap,search,replace,separator,iespell,code,fullscreen",
theme_advanced_buttons2_add_before: "",
theme_advanced_buttons3: "",
theme_advanced_toolbar_location: "top",
theme_advanced_toolbar_align: "left",
extended_valid_elements: "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]",
paste_auto_cleanup_on_paste: true,
paste_convert_headers_to_strong: true,
button_tile_map: true
});
tinyMCE.triggerSave(false, true);
tiny_mce_editor = tinyMCE.get('ctl00_mainContent_tbDescription');
var newData = tiny_mce_editor.getContent();
tinyMCE.execCommand('mceRemoveControl', false, 'your_textarea_name'); …Run Code Online (Sandbox Code Playgroud) 我有这个功能:
Public Shared Function GetQueryStringValue(Of T As Structure)(ByVal queryStringVariable As String) As T
Dim queryStringObject As Nullable(Of T) = Nothing
If queryStringVariable <> Nothing Then
If HttpContext.Current.Request.QueryString(queryStringVariable) IsNot Nothing Then
queryStringObject = DirectCast(HttpContext.Current.Request.QueryString(queryStringVariable), T)
End If
End If
Return queryStringObject
End Function
Run Code Online (Sandbox Code Playgroud)
我希望这样称呼:
Dim userId As Integer = SessionUtil.GetSessionValue(Of Integer)("uid")
Run Code Online (Sandbox Code Playgroud)
我试图使它成为通用的,因为最后查询字符串值可能至少是一个整数或一个字符串,但也可能是一个double和其他.但我得到错误:
Value of 'String' cannot be converted to Type 'T'
我用Session变量完成了同样的事情并且它有效.有人知道如何使这项工作?
编辑:下面的乔纳森艾伦有一个更简单的答案使用CObj()或CTypeDynamic().但是下面也可以从Convert string到nullable类型(int,double等等)
Dim conv As TypeConverter = TypeDescriptor.GetConverter(GetType(T))
queryStringObject = DirectCast(conv.ConvertFrom(queryStringVariable), T)
Run Code Online (Sandbox Code Playgroud) 我正在为实体框架编写一个通用存储库,并对这些调用之间的区别感到困惑:
ObjectContext.CreateObjectSet<T>
ObjectContext.CreateQuery<T>
DbContext.Set<T>
Run Code Online (Sandbox Code Playgroud)
我想要一个通用的存储库,它既支持从.edmx文件生成的上下文,也支持代码第一个DbContext,所以我有这个:
public abstract class EntityRepository<TClass>
where TClass : class, new()
{
//private readonly TContext _context;
private readonly ObjectSet<TClass> _objectSet;
protected EntityRepository(IObjectContextAdapter context)
{
_objectSet = context.ObjectContext.CreateObjectSet<TClass>();
}
protected EntityRepository(ObjectContext context)
{
_objectSet = context.CreateObjectSet<TClass>();
}
public ObjectSet<TClass> Query()
{
return _objectSet;
}
}
Run Code Online (Sandbox Code Playgroud)
在我在网上看过的例子中,我看过所有使用过的3个,它们之间的实际差异是什么?一个更好的表现明智吗?我知道你可以使用所有3种方法针对上下文编写LINQ查询.
.net ×5
asp.net-mvc ×3
c# ×3
asp.net-ajax ×2
generics ×2
assemblies ×1
datacontext ×1
elmah ×1
extending ×1
iis-6 ×1
inheritance ×1
javascript ×1
jquery ×1
query-string ×1
sql-server ×1
string ×1
tinymce ×1
updatepanel ×1
vb.net ×1