我可以停止服务引用生成ArrayOfString而不是string 吗?

我有一个带有这样签名的web方法: public string[] ToUpper(string[] values) 我在Visual Studio 2010中使用“添加服务引用”来生成对我的服务的引用。 不幸的是,这个过程创建了一个名为“ArrayOfString”的代理类,并使用这种类型而不是预期的’string []’类型。 生成的异步服务调用签名最终如下所示: public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values) { } public void ToUpperAsync(Demo.ServiceReference.ArrayOfString values, object userState) { } 我已经尝试了配置服务参考表单中“收集”下拉列表的所有选项,但它似乎并没有什么区别。 这在以前工作,但由于某种原因它可能突然停止工作,可能是从服务中删除另一个Web方法。 如何让生成的服务引用类使用string []类型而不是生成的ArrayOfString类型? 任何有关这方面的帮助将不胜感激。 编辑:正如@Oleg建议的那样,我正在使用ASMX Web服务。

Azure rest api put blob

我试图用Azure rest api放一个blob。 我成功地提出了“GET”请求,但我遇到了“PUT”请求的问题。 当我尝试发出“PUT”请求时,我得到404错误(我在stackoverflow中看过相同的post,但它没有帮助我)。我不确定我使用的MessageSignature是否正确(我已经尝试过MessageSignaturePut但没有工作)。 有什么建议? public void UploadBlobWithRestAPI(string uri, DateTime now) { string blobName = “test.txt”; string method = “PUT”; string sampleContent = “This is sample text.”; int contentLength = Encoding.UTF8.GetByteCount(sampleContent); string queryString = (new Uri(uri)).Query; string blobContainerUri = uri.Substring(0, uri.Length – queryString.Length); string requestUri = string.Format(CultureInfo.InvariantCulture, “{0}/{1}{2}”, blobContainerUri, blobName, queryString); HttpWebRequest request = […]

我可以通过哪些方法确保字符串属性具有特定长度?

我已经创建了一些类,用于向我的数据库中的存储过程提供数据。 存储过程中的varchar参数具有长度规范(例如varchar(6) ,我想在将它们传递给存储过程之前validation所有字符串属性的长度。 有一个简单的,声明性的方法来做到这一点? 到目前为止,我有两个概念性想法: 属性 public class MyDataClass { [MaxStringLength = 50] public string CompanyName { get; set; } } 我不确定我需要使用哪些程序集/命名空间来实现这种声明性标记。 我认为这已经存在,但我不确定它在哪里以及它是否是最佳方式。 在属性中validation public class MyDataClass { private string _CompanyName; public string CompanyName { get {return _CompanyName;} set { if (value.Length > 50) throw new InvalidOperationException(); _CompanyName = value; } } } 这似乎是很多工作,并且会让我当前简单的课看起来很丑陋,但我想它会完成工作。 这也需要大量的复制和粘贴才能做到这一点。

允许用户传递表名和列名,同时防止SQL注入

我有一个(Intranet)网页(ASP.NET C#),它允许用户在SQL-Server中的特定数据库上创建一个表,表名和列名是自由文本字段,实际结构由几个确定下拉菜单。 我知道传递create table语句是因为纯文本字符串与我的文本框中的文本连接在一起容易受到SQL注入的影响。 鉴于我传递的是不存在的db对象的实际名称而不是参数,除了在连接字符串之前检查每个文本框是否包含非法字符之外,还有什么方法可以防止注入的可能性?

删除对象及其相关实体

有谁知道如何删除对象及其所有相关实体。 例如,我有表,Products,Category,ProductCategory和productDetails,productCategory正在连接Product和Category的表。 我从http://msdn.microsoft.com/en-us/library/bb738580.aspx上读到 删除父对象还会删除受约束关系中的所有子对象。 此结果与在关系的关联上启用CascadeDelete属性相同。 我正在使用此代码: Product productObj = this.ObjectContext.Product.Where(p => p.ProductID.Equals(productID)).First(); if (!productObj.ProductCategory.IsLoaded) productObj.ProductCategory.Load(); if (!productObj.ProductDetails.IsLoaded) productObj.ProductDetails.Load(); //my own methods. base.Delete(productObj); base.SaveAllObjectChanges(); 但我在ObjectContext.SaveChanges();上收到错误ObjectContext.SaveChanges(); 也就是说, 正在从AssociationSet ‘添加或删除关系。 使用基数约束时,还必须添加或删除相应的“ProductCategory”。

关于entity framework迁移的空引用

当我使用Entity Framework迁移的Add-Migration命令时,我得到以下exception: System.NullReferenceException: Object reference not set to an instance of an object. at System.Data.Entity.Migrations.Extensions.ProjectExtensions.GetFileName(Project project, String projectItemName) at System.Data.Entity.Migrations.MigrationsCommands..ctor(Object project, Object startUpProject, String configurationTypeName, String connectionStringName, String connectionString, String connectionProviderName, PSCmdlet cmdlet) 任何见解?

允许自定义文件双击并打开我的应用程序,同时加载它的数据

就像在Windows中进行引用一样,要打开.txt文件,它可能会打开NotePad.exe和/或Word.exe,同时将文件中的文本加载到编辑器中。 如何使用我的桌面应用程序执行此操作。 我有一个自定义文件类型,扩展名为.mmi。 我想要它,以便当用户双击此文件类型时,它不仅会打开我的应用程序,而是将其中的数据加载到我的应用程序的相应区域。 我理解如何为我的应用程序设置设置自定义文件类型,但我丢失的地方是如何获取触发打开我的应用程序的文件信息,以便我可以从中获取数据。 例如。 如果我打开.html,并选择使用notepad.exe,则html现在会加载到新打开的文本编辑器中。 这适用于From应用程序,而不是以main为args的控制台应用程序,可以帮助或更改任何内容。 示例如下: public partial class FormDashboard : Form { public FormDashboard() { InitializeComponent(); } private void FormDashboard_Load(object sender, EventArgs e) { //I want to get what file trigger the app to open here, and apply the data accordingly throurght the forms application. }

如何确保Process.Start(ProcessStartInfo)启动的流程窗口具有所有Forms的焦点?

c#。如何确保Process.Start(ProcessStartInfo)启动的流程窗口具有所有Forms的焦点? 谢谢,

如何在c#/ Linq中获取确定列名的值?

我想知道是否有可能获得明确的列名称的值? 例如, SELECT NAME FROM PERSON; string NAME; a… == NAME); 问题是列名称可能会更改,它并不总是“NAME”列。 因此,我需要一个解决方案,我可以动态地将列名称传递给查询。

Request.QueryString如何工作?

我有一个这样的代码示例: location.href = location.href + “/Edit?pID=” + hTable.getObj().ID; ; //aspx parID = Request.QueryString[“pID”]; //c# 它有效,我的问题是 – 如何? 什么是逻辑? 谢谢 :)