场景
我们有一个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) 想象一下,我有一个包含整数列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) 还有一个"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包装的唯一方法是在现有的跨度之间包含一些非白色空间.
这种解决方法还可以,但我很想知道:
提前致谢
<!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
这样的事情存在吗?
我有一个客户文件,显然是无效的 XSLT(.Net XSLTransform 无法读取它们),但我没有任何有用的错误消息可以继续。我在想,如果有 DTD 或 XSD,我至少可以验证他的转换。
谢谢
发布此内容后不久,一位同事指出 Visual studio 2010 在这个(默认)文件夹中安装了几个这样的架构:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Xml\Schemas。
看起来 MS 已经从这个 DTD派生出了他们自己的 XSD 。
我想将一些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) 这是一个非常奇怪的问题 - 任何想法/帮助/提示将不胜感激.
我们的网络应用程序使用以下代码将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服务器如何变得错误(它只是流式二进制到客户端之后)所有).
跟进
我使用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) 我的问题与
使用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 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) 我希望将所有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)
甚至那不起作用 - 我感觉我正在做一些非常明显的愚蠢/错误的事情 - 但是它再次在其他浏览器中工作正常!
任何帮助非常感谢.
当您从组织中删除用户时,GitHub 会警告您该组织的私有存储库的所有分叉都将被删除
从 XX 组织中删除人员也会删除他们在 XX 拥有的任何私有存储库中的分叉。
GitHub 会告诉您用户有多少个私有分叉,但它不会告诉您存储库名称(即使我有权查看它们!)
查看存储库会很有用,这样我就可以检查它们是否确实没有在分支上留下未完成的、可能有用的工作(它们尚未打开拉取请求)。