小编Seb*_*ter的帖子

转义web.config连接字符串中的引号

我的网络配置中有一个连接字符串:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password=somepass"word" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

如您所见,密码中有一个引号(")(从其他部门给出.我无法更改此db用户密码).

如何在此连接字符串中转义引号?

顺便说一句:我已经尝试过" 在字符串中.那不起作用 - ado.net得到了一个ArgumenException:"初始化字符串的格式不符合从索引57开始的规范." 57是" 在我的连接字符串中.我也尝试将密码部分包含在' - 也没用.

还试过""和\" - 无法解析web.config.

谢谢你的解决方案:

我必须结合双引号的转义并将密码放在单引号中:

<add name="MyConString" connectionString="Server=dbsrv;User ID=myDbUser;Password='somepass&quot;word'" providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

asp.net connection-string web-config escaping

80
推荐指数
2
解决办法
9万
查看次数

Visual Studio始终为App.config选择错误的xsd

首先,我有一个具有此配置的.NET 4.0应用程序:

<?xml version="1.0"?>
<configuration>
    <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
    </startup>
</configuration>
Run Code Online (Sandbox Code Playgroud)

我遇到了与此问题中的问题相同的问题:转换为Visual Studio 2010/.Net 4.0后,app.config"无法找到架构信息":编辑器无法识别supportedRuntime元素,从而产生提示.

然后,我接着回答:我在app.config编辑器中,然后转到"属性"窗口.在那里我选择了Schemas条目.

我删除了DotNetConfig.xsd的选择并改为选择了DotNetConfig35.xsd,但VS总是会再次自动添加DotNetConfig.xsd.即使我明确地将其设置为"不使用此架构",甚至从列表中删除架构 - 它也会自动再次添加到列表中并进行选择.

因为我现在选择了两个定义相同元素的模式,所以我得到了很多警告.

如何更改架构以使用DotNetConfig35.xsd并且不再自动添加DotNetConfig.xsd?

xsd app-config visual-studio-2010

22
推荐指数
1
解决办法
2万
查看次数

阻止Azure网站设置WAWebSiteID和ARRAffinity cookie

我有一个共享模式的Windows Azure网站.

现在Azure显然在我的网站上添加了两个cookie:WAWebSiteIDARRAffinity.我了解到那些cookie可用于启用Azure负载均衡器后面的应用程序和请求路由功能(ARR)的粘性会话.

尽管如此,我的网站不需要粘性会话,我也不希望有这些cookie.

首先,我从来没有想到粘性会话在我脑海中浮现,所以我编写了应用程序,以便在所有前端均匀分布的请求中很好地扩展.实际上,粘性会话会改变分发,因为有很多客户做了很多请求而客户几乎没有.当只有第一个请求被分发并且来自同一客户端的后续请求粘贴到同一服务器时,这会严重影响我的应用程序的整体性能.

其次,出于数据隐私原因,我运行了一个无cookie应用程序,任何cookie都被认为是"邪恶的".我知道我可以用一点点javascript删除它们,但我甚至不希望它们被传输到客户端.

问题是:如何在服务器端的Azure网站上禁用粘性会话和这两个cookie?

azure azure-web-sites arr

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

ASP.NET MVC4在IIS7集成模式下不处理POST请求,但在IIS7.5中

我有一个有趣的案例,我无法解释,我需要帮助弄清楚我在IIS7上的问题:

鉴于:

  • ASP.NET MVC 4 Web应用程序
  • 注册到{controller}/{action}的默认路由

请参阅以下控制器:

public class ServiceController : Controller
{
    public ActionResult Test()
    {
        return Content("Test");
    }

    [HttpPost]
    public ActionResult Test2()
    {
        return Content("Test2");
    }
}
Run Code Online (Sandbox Code Playgroud)

另外,在Global.asax中有以下代码:

protected void Application_EndRequest()
{
    if (Context.Response.StatusCode == 404)
    {
        ExecuteIndexPage();
    }
}

protected void Application_Error(object sender, EventArgs e)
{
    var error = Server.GetLastError();
    ExceptionLogger.Log(error);

    ExecuteIndexPage();
}
Run Code Online (Sandbox Code Playgroud)

因此,只要出现服务器错误,就会记录下来.在这种情况下,在正常404的情况下,返回起始页面.这工作(几乎)很好.以后更多.

此设置在IIS7(Windows Server 2008,生产环境)和IIS7.5(Win7 Pro,开发环境和Windows Server 2008 R2,以及生产环境)上提供了非常不同的行为.

鉴于IIS中的以下配置(两个版本):

  • IIS中的Web使用集成模式 ASP.NET 4应用程序池进行配置
  • <modules runAllManagedModulesForAllRequests ="true"/>在system.webServer部分中设置

IIS 7.5中,行为是:

  • GET请求到/:返回索引页面
  • POST请求到/:返回索引页面
  • GET请求/ …

iis-7 iis-7.5 asp.net-mvc-4

13
推荐指数
1
解决办法
3336
查看次数

C#xml文档:如何创建Notes?

我想在我自己的文档中的这个MSDN页面的备注部分中实现与黄色'注意:'框类似的东西.

我正在使用sandcastle和sandcastle帮助文件构建器从文档标签生成参考网站.为了获得这样的便签盒,我需要写些什么?

c# tags xml-documentation

12
推荐指数
1
解决办法
2311
查看次数

如何在不重定向的情况下返回不同的 Razor 页面?

我正在将一个 Asp.Net MVC 应用程序移植到 Razor Pages。

在 MVC 应用程序的一些控制器中,它使用 return View("someOtherView", someModelForOtherView);

如何将其移植到 Razor Pages?我需要做的是将请求转移到另一个 Razor 页面并将准备好的 PageModel 传递给它(另一个页面不需要执行OnMethod(),只需呈现其 html。或者,换句话说,我只需要交换模板应该与另一个文件一起呈现的文件。

我无法使用,Redirect因为不能通过浏览器进行另一次往返。

razor-pages

12
推荐指数
1
解决办法
2214
查看次数

带有/ pp(/ preprocess)的MSbuild 4不会写入预处理文件

我想用诊断原因创建一个带有msbuild的预处理文件.文档说明,我只需要使用/ pp:Filename开关调用msbuild.所以我做了:

msbuild project.sln /t:Build /p:Configuration=Release /pp:out.txt
Run Code Online (Sandbox Code Playgroud)

它还会创建一个'out.txt'文件,因此该参数显然会产生一些影响,但该文件为空(大小为0,没有内容).那么预处理的项目文件写得不正确的原因可能是什么?项目文件虽然很好.

msbuild command-line

9
推荐指数
2
解决办法
2283
查看次数

我可以直接从HttpResponseMessage流式传输到文件而无需通过内存吗?

我的程序使用HttpClient向Web API发送GET请求,并返回一个文件.

我现在使用此代码(简化)将文件存储到光盘:

public async Task<bool> DownloadFile()
{
    var client = new HttpClient();
    var uri = new Uri("http://somedomain.com/path");
    var response = await client.GetAsync(uri);

    if (response.IsSuccessStatusCode)
    {
        var fileName = response.Content.Headers.ContentDisposition.FileName;
        using (var fs = new FileStream("C:\test\" + fileName, FileMode.Create, FileAccess.Write, FileShare.None))
        {
            await response.Content.CopyToAsync(fs);
            return true;
        }
    }

    return false;
}
Run Code Online (Sandbox Code Playgroud)

现在,当此代码运行时,该进程会将所有文件加载到内存中.我实际上宁愿期望流从HttpResponseMessage.Content流式传输到FileStream,因此只有一小部分流被保存在内存中.

我们计划在大文件(> 1GB)上使用它,那么有没有办法在没有内存中的所有文件的情况下实现它?

理想情况下,没有手动循环读取一部分到byte []并将该部分写入文件流直到所有内容都被写入?

c# stream asp.net-web-api2

8
推荐指数
2
解决办法
7803
查看次数

如何在Azure Web角色启动时跟踪错误?

我是天蓝色的网络角色.它在开发应用程序结构中本地运行正常,但在部署到Azure时无声地失败(根本没有响应任何请求).

我认为这是web.config的一些问题,但这种情况发生得如此之早,以至于在我可以在全局asax中设置诊断内容之前就已经发生了.如上所述,它在本地工作正常,但是天蓝色系统根本没有任何响应.

我怎样才能找到能够解决它的具体问题,例如获取异常文本,堆栈跟踪,IIS应用程序系统错误日志或任何可能暗示我真正问题的东西?

web-config azure

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

MessageQueue.BeginReceive 如何工作以及如何正确使用它?

我目前有一个后台线程。在这个线程中是一个无限循环。

这个循环偶尔会更新数据库中的一些值,然后在 MessageQueue 上侦听 1 秒(使用queue.Receive(TimeSpan.FromSeconds(1)))。

只要没有消息进来,这个调用就会在内部抛出一个 MessageQueueException (Timeout),它被捕获,然后循环继续。如果有消息,调用通常会返回并处理消息,然后循环继续。

这会导致很多第一次机会异常(每秒一次,除非有消息要处理)并且这会导致调试输出垃圾邮件,并且当我忘记排除 MessageQueueExceptions 时也会在调试器中中断。

那么 MessageQueue 的异步处理意味着如何正确完成,同时仍然确保,只要我的应用程序运行,队列就会受到监控,并且数据库也会不时更新。当然这里的线程不应该占用100%的CPU。

我只需要大图或对正确完成异步处理的提示。

c# asynchronous msmq message-queue

4
推荐指数
1
解决办法
6631
查看次数