如果我被告知一个表(或proc)名称,但没有告诉该对象所在的连接数据库,是否有任何简单的脚本来搜索它?也许搜索系统数据库中的某个地方?(我正在使用SQL Server 2005)
在方法参数中使用基类型有什么好处?
这是一个样本:
private void Foo(List<int> numbers) //R# laments: parameter can be IEnumerable.
{
foreach (var i in numbers) {
Console.WriteLine(i);
}
}
Run Code Online (Sandbox Code Playgroud)
这是另一个
public class Foo : ICloneable
{
public object Clone()
{
return MemberwiseClone();
}
public Foo CopyMe(Foo other) //R# laments: parameter can be ICloneable
{
return (Foo)other.Clone();
}
}
Run Code Online (Sandbox Code Playgroud)
...我们可以在哪里更改类型,但Foo在运行时会失败.
所以问题是:当R#建议参数可以是'X'时,我该怎么办?
PS.只是Whysharper的另一个解释- 一个与Resharper和StackOverflow相吻合的插件.人们说这很好,但缺乏很好的解释 - 希望我们能在一起做得更好;).
我有一个ASP.net Web服务,我用于Web应用程序,它向我返回XML或JSON数据,具体取决于我调用的函数.到目前为止,这一直运作良好,但我遇到了一个问题.我想在我的页面上创建一个"导出"链接,用于下载JSON文件.链接的格式非常简单:
<a href="mywebserviceaddress/ExportFunc?itemId=2">Export This Item</a>
Run Code Online (Sandbox Code Playgroud)
正如您可能想象的那样,这应该导出第2项.到目前为止,这么好,是吗?
问题是因为我并没有特别要求接受的内容类型是JSON,所以ASP.net绝对拒绝发回除XML以外的任何内容,这对于这种情况并不合适.代码基本如下:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public Item ExportItem(int itemId)
{
Context.Response.AddHeader("content-disposition", "attachment; filename=export.json"); //Makes it a download
return GetExportItem(itemId);
}
Run Code Online (Sandbox Code Playgroud)
尽管我将ResponseFormat指定为JSON,但除非我通过AJAX(使用Google Web Toolkit,BTW)请求此方法,否则我总是返回XML:
RequestBuilder builder = new RequestBuilder(RequestBuilder.POST, "mywebserviceaddress/ExportFunc");
builder.setHeader("Content-type","application/json; charset=utf-8");
builder.setHeader("Accepts","application/json");
builder.sendRequest("{\"itemId\":2}", new RequestCallback(){...});
Run Code Online (Sandbox Code Playgroud)
这很好,但AJAX不会给我一个下载对话框.有没有办法迫使ASP.net给我回JSON,无论数据是如何请求的?在我看来,没有手动覆盖这种行为是一个严重的设计疏忽.
快速回答:
首先,我想说,我认为womp的答案可能是长期更好的方式(转换为WCF),但是deostroll让我得到了我将在不久的将来使用的答案.此外,应该注意的是,这似乎主要是因为我只想下载,在所有情况下都可能无法正常工作.在任何情况下,这里是我最终用来获得我想要的结果的代码:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void ExportItem(int itemId)
{
Item item = GetExportItem(itemId);
JavaScriptSerializer js = new JavaScriptSerializer();
string str = js.Serialize(item);
Context.Response.Clear();
Context.Response.ContentType = "application/json";
Context.Response.AddHeader("content-disposition", "attachment; filename=export.json");
Context.Response.AddHeader("content-length", str.Length.ToString());
Context.Response.Flush();
Context.Response.Write(str);
}
Run Code Online (Sandbox Code Playgroud)
请注意 …
我在vs2008解决方案中有几个wdprojects(web deployment 2008).当我安装vs2010 RC时,我的wdprojects都不会打开.
我能做些什么才能让它发挥作用?
DateTimeOffset当数据表示为Xml时,我在此类中拥有的属性不会被呈现.我需要做什么来告诉Xml序列化将其正确呈现为DateTime或DateTimeOffset?
[XmlRoot("playersConnected")]
public class PlayersConnectedViewData
{
[XmlElement("playerConnected")]
public PlayersConnectedItem[] playersConnected { get; set; }
}
[XmlRoot("playersConnected")]
public class PlayersConnectedItem
{
public string name { get; set; }
public DateTimeOffset connectedOn { get; set; } // <-- This property fails.
public string server { get; set; }
public string gameType { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和一些样本数据......
<?xml version="1.0" encoding="utf-8"?>
<playersConnected
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<playerConnected>
<name>jollyroger1000</name>
<connectedOn />
<server>log1</server>
<gameType>Battlefield 2</gameType>
</playerConnected>
</playersConnected>
Run Code Online (Sandbox Code Playgroud)
我希望可能有一种方法通过属性,我可以在属性上装饰......
有没有办法摆脱根节点中声明的那两个命名空间?我是不是该?
我需要将我的用户重定向到AuthError.aspx页面("您无权访问此页面"),如果他们经过身份验证但尝试访问他们无法访问的页面(因为考试的角色) .如果我设置了web.config,那么:
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880" />
</authentication>
Run Code Online (Sandbox Code Playgroud)
这是系统的错误行为,因为用户已经过身份验证,无需将他或她重定向到此页面.但是,如果我在这里写AuthError.aspx而不是Login.aspx我怎么能将尚未验证的用户重定向到登录页面?
接口可以是函数的返回类型.如果是的话那就是优势.例如,以下代码更正在返回接口数组的位置.
public interface Interface
{
int Type { get; }
string Name { get; }
}
public override Interface[] ShowValue(int a)
{
.
.
}
Run Code Online (Sandbox Code Playgroud) 我创建了一个MemoryStream,传递给CryptoStream写作.我希望CryptoStream加密,然后让MemoryStream我开放,然后阅读其他内容.但是一旦CryptoStream被处置,它MemoryStream也会被处置掉.
可以以某种方式打开CryptoStream基地MemoryStream吗?
using (MemoryStream scratch = new MemoryStream())
{
using (AesManaged aes = new AesManaged())
{
// <snip>
// Set some aes parameters, including Key, IV, etc.
// </snip>
ICryptoTransform encryptor = aes.CreateEncryptor();
using (CryptoStream myCryptoStream = new CryptoStream(scratch, encryptor, CryptoStreamMode.Write))
{
myCryptoStream.Write(someByteArray, 0, someByteArray.Length);
}
}
// Here, I'm still within the MemoryStream block, so I expect
// MemoryStream to still be usable. …Run Code Online (Sandbox Code Playgroud) 我的应用程序的Release文件夹中有一个settings.json文件.我想要做的是更改它的值,而不是暂时,永久..这意味着,删除旧条目,写一个新条目并保存它.
这是JSON文件的格式
{
"Admins":["234567"],
"ApiKey":"Text",
"mainLog": "syslog.log",
"UseSeparateProcesses": "false",
"AutoStartAllBots": "true",
"Bots": [
{
"Username":"BOT USERNAME",
"Password":"BOT PASSWORD",
"DisplayName":"TestBot",
"Backpack":"",
"ChatResponse":"Hi there bro",
"logFile": "TestBot.log",
"BotControlClass": "Text",
"MaximumTradeTime":180,
"MaximumActionGap":30,
"DisplayNamePrefix":"[AutomatedBot] ",
"TradePollingInterval":800,
"LogLevel":"Success",
"AutoStart": "true"
}
]
}
Run Code Online (Sandbox Code Playgroud)
假设我想更改密码值而不是BOT PASSWORD我希望它只是密码.我怎么做?
令人惊讶的是,String.Clone()不会像返回的那样返回字符串的副本String.Copy().相反,它返回'this'原始字符串.
我想了解为什么.Net Framework团队选择这样做.
根据MSDN:
ICloneable接口[...]要求您的Clone方法实现返回当前对象实例的副本.
String.Clone() 显然不遵循本指南.
我知道字符串是不可变的,但如果不变性是这里的原因,String.Copy()也会返回,this但事实并非如此.
当然,这是一个相当理论化的问题.
c# ×5
.net ×2
json ×2
asmx ×1
asp.net ×1
icloneable ×1
interface ×1
resharper ×1
sql-server ×1
stream ×1
string ×1
web-services ×1