小编Chr*_*ell的帖子

凭证未在生产服务器中的WCF调用上传递

场景

我们有一个Web应用程序,使用以下代码调用Web服务(在IIS中托管在同一台机器上): -

using (HttpContext.Current.Request.LogonUserIdentity.Impersonate())
{
    var client = new Services.ReportFormatter(endpointName);  // endpoint name is configured in config
                                                       // Services.ReportFormatter is the generated client code using svcutil
    var response = client.DoWork();
}
Run Code Online (Sandbox Code Playgroud)

代码的意图是使用Web应用程序用户的凭据执行WCF调用(我希望这显然是显而易见的!)并且代码就像Dev和QA机器上的魅力一样.不用说,它在生产中失败了!

问题

生成的.Net异常是

The HTTP request is unauthorized with client authentication scheme 'Negotiate'. The authentication header received from the server was 'Negotiate,NTLM,Basic realm="Services"'. InnerException:The remote server returned an error: (401) Unauthorized.

有趣的是,IIS日志表明没有在WCF请求上传递用户凭据

Fields: 
cs-method cs-uri-stem cs-uri-query              s-port cs-username c-ip sc-status sc-substatus sc-win32-status 
GET       /MyWebApp/MyPage.aspx                   - 443 chrisf x.x.x.x …
Run Code Online (Sandbox Code Playgroud)

asp.net wcf

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

编写CHECK CONSTRAINT的一种更好的方法,它检查确切的一个值不为null

想象一下,我有一个包含整数列Col1,Col2,Col3,Col4的表.每列都是可空的,并且有效行必须包含恰好1列的值(即所有空值无效且多于1列也无效).

目前我有这样的检查约束

ALTER TABLE [dbo].[MyTable]  WITH CHECK 
    ADD CONSTRAINT [CK_ReportTemplateAttributes] CHECK  
    ((
        [Col1] IS NOT NULL AND [Col2] IS NULL AND [Col3] IS NULL AND [Col4] IS NULL
        OR 
        [Col1] IS NULL AND [Col2] IS NOT NULL AND [Col3] IS NULL AND [Col4] IS NULL
        OR 
        [Col1] IS NULL AND [Col2] IS NULL AND [Col3] IS NOT NULL AND [Col4] IS NULL
        OR 
        [Col1] IS NULL AND [Col2] IS NULL AND [Col3] IS NULL AND [Col4] IS NOT NULL
    )); …
Run Code Online (Sandbox Code Playgroud)

sql sql-server check-constraints

5
推荐指数
2
解决办法
1609
查看次数

元素未按IE 8/9中的预期包装

还有一个"IE正在做一些与其他浏览器不同的问题",但这是一个有点不寻常的IE7做正确的事情,但IE 8和9没有.

这是情况,我有一个简单的3列布局.前两列是固定宽度,第三列是可变宽度,因此它占用了可用空间.

我在第三列输出文本数据.文本数据应该可以自由地包装在数据值/句子的末尾 - 所以我将其输出为.

<span class="nowrap">foo bar</span>
<span class="nowrap">moo bahh</span>
Run Code Online (Sandbox Code Playgroud)

(也见下面的例子)

一切都像FF,Chrome和IE7中的魅力一样,但是Internet Explorer 8和9将连续的nowrap跨度视为1个大的nowrap元素(即它将所有值放在一行上).跨度之间有空白区域(IMO)应该可以自由包裹.我可以让IE8/9包装的唯一方法是在现有的跨度之间包含一些非白色空间.

这种解决方法还可以,但我很想知道:

  • IE是正确还是错误地呈现标记(即我期望值应该包装不正确.我只假设IE出错,因为其他浏览器的做法不同)
  • 我有一个更优雅的解决方案:在一个理想的世界中,我想确保分离逗号永远不会包裹到新行的开头.

提前致谢

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head runat="server">
    <style type="text/css">
        .leftBit {float:left; margin-right: 10px; background-color: yellow;}
        .middleBit {float:left; width:305px; margin-right: 10px; background-color: orange;}
        .remainder {margin-left: 420px;  min-width: 200px;background-color: #DDD;}
        .nowrap { white-space:nowrap;}
        .clear {clear: both;}
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div>
         <div >
            <div class="leftBit">Left bit</div>
            <div class="middleBit">This value wraps - but I want to keep …
Run Code Online (Sandbox Code Playgroud)

html css internet-explorer internet-explorer-8 internet-explorer-9

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

在哪里可以找到 XSLT 1.0 规范的 XSD 或 DTD?

这样的事情存在吗?

我有一个客户文件,显然是无效的 XSLT(.Net XSLTransform 无法读取它们),但我没有任何有用的错误消息可以继续。我在想,如果有 DTD 或 XSD,我至少可以验证他的转换。

谢谢


发布此内容后不久,一位同事指出 Visual studio 2010 在这个(默认)文件夹中安装了几个这样的架构:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas

看起来 MS 已经从这个 DTD派生出了他们自己的 XSD 。

xslt-1.0

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

当XML在特定命名空间中时,如何将XML读入DataTable

我想将一些XML数据读入DataTable - 使用ReadXml类似的方法

        var dataTable = new DataTable();
        XmlReader xmlReader = XmlReader.Create(new StringReader(xmlString));
        dataTable.ReadXml(xmlReader);
Run Code Online (Sandbox Code Playgroud)

请参阅下面的XML字符串.XML包含模式定义,当数据没有命名空间(即在全局命名空间中)时,一切都很好,但是我无法弄清楚如何指定模式和XML,以便XML数据元素在另一个命名空间中.

我得到的例外是"DataTable"cd:Motorcycles'与源中的任何DataTable都不匹配.

我知道我正在犯一些非常愚蠢的男生错误,但我现在已经把头发拉了一个小时左右 - 摆弄没有成功.

有人能让我把我从痛苦中解救出来吗?

有效的XML

          <NewDataSet xmlns="">
            <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
              <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:MainDataTable="Motorcycles" msdata:UseCurrentLocale="true">
                <xs:complexType>
                  <xs:choice minOccurs="0" maxOccurs="unbounded">
                    <xs:element name="Motorcycles">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="Manufacturer" type="xs:string" minOccurs="0" />
                          <xs:element name="PercentageOfRiders" type="xs:int" minOccurs="0" />
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:choice>
                </xs:complexType>
              </xs:element>
            </xs:schema>
            <Motorcycles>
              <Manufacturer>Honda</Manufacturer>
              <PercentageOfRiders>23</PercentageOfRiders>
            </Motorcycles>
            <Motorcycles>
              <Manufacturer>Yamaha</Manufacturer>
              <PercentageOfRiders>15</PercentageOfRiders>
            </Motorcycles>
            <Motorcycles>
              <Manufacturer>Suzuki</Manufacturer>
              <PercentageOfRiders>16</PercentageOfRiders>
            </Motorcycles>
            <Motorcycles>
              <Manufacturer>BMW</Manufacturer>
              <PercentageOfRiders>6</PercentageOfRiders>
            </Motorcycles>
            <Motorcycles>
              <Manufacturer>Other</Manufacturer>
              <PercentageOfRiders>40</PercentageOfRiders>
            </Motorcycles> …
Run Code Online (Sandbox Code Playgroud)

xml datatable

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

在IIS 7.5中提供PDF文件的问题

这是一个非常奇怪的问题 - 任何想法/帮助/提示将不胜感激.

我们的网络应用程序使用以下代码将PDF文件流式传输到浏览器

byte [] fileBytes = GetTheFileBytes();
string contentType = "application/pdf";

context.Response.Clear();
context.Response.ClearHeaders();
context.Response.ContentType = contentType;
context.Response.AddHeader("Content-Length", fileBytes.Length.ToString());
context.Response.AddHeader("Content-Type", contentType);

MemoryStream outputStream = new MemoryStream(fileBytes);
outputStream.WriteTo(context.Response.OutputStream);
context.Response.Flush();
Run Code Online (Sandbox Code Playgroud)

这似乎非常无害并且在IIS 6和IIS 7中运行良好:如果用户安装了PDF插件(adobe或foxit等),则PDF将显示在他们的浏览器中.

但是,在IIS 7.5(Windows 7和Win 2008 R2)中,Foxit插件在IE中挂起,Adobe插件在IE和FF中挂起.即如果我进入

http://iis70Host/application/getPDF.aspx一切都很好,但 http://iis75Host/application/getPDF.aspx在同一个浏览器中挂起.

我正在为完全相同的浏览器提供完全相同的PDF文件,并且两个Web服务器都在2.0框架中运行应用程序.

当它们崩溃时,我还没有设法从任一插件中获取有用的错误消息.

我认为IIS 7.5正在以某种方式破坏文件(因为客户端浏览器和插件是相同的) - 但我发现很难想象Web服务器如何变得错误(它只是流式二进制到客户端之后)所有).

  • 任何人都可以想到为什么行为将是不同的IIS 7.0和7.5?
  • 有谁知道如何从Adobe或foxit插件中获取更多调试信息?(如果我能得到他们崩溃的原因,那么也许它会给我一个关于服务器上出了什么问题的线索).
  • 诊断问题的其他任何提示?

跟进

  • 我使用wget捕获了文件,它们完全相同.

  • 我已经看过使用fiddler的请求和响应头,并且它们没有明确提到响应头中的"Range"(或请求头中的Accept-range),这说明了这是多部分请求的可能性mwalker建议的问题.

  • 我继续安装了MS Hotfix,但这对情况没有帮助(因此我更确定它不是"多部分问题").

所以我想我回来乞求更多关于可能出错的想法!

下面是fiddler访问运行IIS 7.5,7.0和6的主机时记录的请求和响应标头

IIS 7.5

GET /eco/dataFile.aspx?data=147098&record=9754 HTTP/1.1
Host: chrisf
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.7
Accept: …
Run Code Online (Sandbox Code Playgroud)

pdf iis iis-7.5

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

如何确保在同一服务器上托管的应用程序之间不共享会话状态

我的问题
使用SQL Server的两个ASP.NET应用程序之间的以下共享会话状态 以及 如何在ASP.NET中的多个Web应用程序中维护相同的会话ID 相反.

我们的应用程序使用状态服务器来存储会话信息,我们经常希望在同一个Web服务器上托管同一应用程序的多个版本.

目前,因为ASP.NET_SessionIdcookie不是针对任何路径存储的,所以如果我http://donkey.com/app1开始新的会话,然后在同一个浏览器会话中http://donkey.com/app2,我会从app1继承会话ID(以及会话状态).

有没有办法劝说ASP.Net在存储会话ID cookie时设置路径,从而打破这种不必要的会话状态共享?

asp.net session-state

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

ResolveClientUrl在ASP.Net 4和3.5中的工作方式不同

[抱歉,如果我的问题标题没有准确描述我的问题 - 如果你能想到一个更好的标题并且有权改变这个,那么请随时改变它!].

我认为我偶然发现ASP.Net 3.5和4.0之间的细微变化.

[编辑:我已经确认twix 3.5和4.0的行为发生了变化 - 请参阅我的回答]

这是场景: -

我有一个ASP.Net 3.5 Web应用程序.我有一个简单的用户控件{appRoot} /Controls/Widgets/MyPictureAndTextWidget.ascx,它基本上包含一些文本和另一个用户控件({appRoot} /Controls/Widgets/MyPicture.ascx).

在大多数情况下,此控件以正常方式使用 - 即将其包含在其他页面的标记中,但我有一个实例,我需要使用Ajax获取要在客户端上呈现的HTML.

我实现这一目标的方法是编写一个asmx Web服务,以编程方式创建一个新的页面并动态地"LoadControl"用户控制,然后从字符串构建器中的页面呈现中捕获输出 - 特别是不优雅但它有效!请参见底部的来源.

但是,在将项目升级到Asp.Net 4.0之后,上面的代码不再像过去那样工作了; 渲染时的图像src="../images/xxx.png(注意不需要的'../').

我已经创建了一个小的演示应用程序http://cid-916198839f3e806c.office.live.com/self.aspx/Public/TestingImageWTF.zip 如果你想为自己运行它.当您使用3.5编译应用程序时,它可以工作(即您在测试页面上看到2张蜘蛛图片)但是当您在4.0下编译并运行时,您只能看到1个蜘蛛(另一个图像的URL错误).

我能想到的唯一解释是该ResolveClientUrl方法(Image控件将使用该方法来计算当前正在执行的页面中图像的相对路径)的行为方式不同.图像URL显示为"../ images/xxx.png"这一事实意味着图像控件"认为"它正在一个页面中执行,该页面在运行时具有类似"{appRoot}/folder/handler"的路径4.0以下,但它认为它在3.5下的上下文'{appRoot}/handler'中运行.

我希望这对你有意义 - 抱歉,如果我没有非常清楚或简明地描述问题.

任何人都可以告诉我们如何: -

  • 恢复3.5行为(显然没有恢复到3.5框架!)

  • 或者首先在Web服务中生成HTML的更好方法是什么?

来源

完整的测试应用程序可以从这里下载http://cid-916198839f3e806c.office.live.com/self.aspx/Public/TestingImageWTF.zip

网络服务

    [WebMethod]
    [ScriptMethod]
    public string GetWidgetHtml(int number)
    {
        var pageHolder = new Page
                             {
                                         //AppRelativeVirtualPath = "~/" // I tried playing with this but it made no difference!
                             };
        for (int i = 0; i …
Run Code Online (Sandbox Code Playgroud)

asp.net

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

IE 7没有使用最具体的CSS规则

我希望将所有th元素的样式设置为相同(黑色背景上的白色文本),除了几个不需要这种格式的用法之外 - 在这种情况下,我将一个类添加no-headers到table元素中.

th {background-color: #000000; color:#FFF;}
table.no-headers th {color:inherit; background-color:inherit ;border:inherit; } 
Run Code Online (Sandbox Code Playgroud)

所以这里有一些示例标记,如果你需要一些

<table><tr><th>This has a black bground</th></tr></table>
<table class="no-headers"><tr><th>This inherits bground from parent</th></tr></table>
Run Code Online (Sandbox Code Playgroud)

这在IE 8/9和FF和Chrome中运行良好,但在IE 7中不行.IE 7不会使用第二条规则 - 尽管它更具选择性.
事实上,我已经尝试了各种方法来解决这个问题 - 一切都无济于事.

我也试过在th元素上添加no-headers类

th {background-color: #000000; color:#FFF;}
th.no-headers {color:inherit; background-color:inherit ;border:inherit; } 

<table><tr><th class="no-headers">This inherits bground from parent</th></tr></table>
Run Code Online (Sandbox Code Playgroud)

甚至那不起作用 - 我感觉我正在做一些非常明显的愚蠢/错误的事情 - 但是它再次在其他浏览器中工作正常!

任何帮助非常感谢.

css css-selectors internet-explorer-7

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

GitHub:如何列出特定用户分叉的所有私有存储库?

当您从组织中删除用户时,GitHub 会警告您该组织的私有存储库的所有分叉都将被删除

从 XX 组织中删除人员也会删除他们在 XX 拥有的任何私有存储库中的分叉。

GitHub 会告诉您用户有多少个私有分叉,但它不会告诉您存储库名称(即使我有权查看它们!)

查看存储库会很有用,这样我就可以检查它们是否确实没有在分支上留下未完成的、可能有用的工作(它们尚未打开拉取请求)。

github git-fork

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