小编rwk*_*iii的帖子

如何在ASP.NET MVC/WebAPI应用程序中支持HTTP OPTIONS动词

我已经设置了一个ASP.NET Web应用程序,从MVC 4/Web API模板开始.看起来好像工作得很好 - 我没有发现任何问题.我使用Chrome和Firefox浏览网站.我已经使用Fiddler进行了测试,所有的回复似乎都在钱上.

所以现在我继续编写一个简单的Test.aspx来使用这个新的Web API.脚本的相关部分:

<script type="text/javascript">
    $(function () {

        $.ajax({
            url: "http://mywebapidomain.com/api/user",
            type: "GET",
            contentType: "json",
            success: function (data) {

                $.each(data, function (index, item) {

                    ....

                    });
                }
                );

            },
            failure: function (result) {
                alert(result.d);
            },

            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert("An error occurred, please try again. " + textStatus);
            }

        });

    });
</script>
Run Code Online (Sandbox Code Playgroud)

这会生成一个REQUEST标头:

OPTIONS http://host.mywebapidomain.com/api/user HTTP/1.1
Host: host.mywebapidomain.com
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, …
Run Code Online (Sandbox Code Playgroud)

asp.net ajax asp.net-web-api

77
推荐指数
6
解决办法
11万
查看次数

VS中的TFS/GIT无法切换到master,因为存在未提交的更改

我在visualstudio.com上为VS 2013解决方案设置了一个GIT存储库.当我习惯于使用TFS(在GIT模式下)时,存储库工作得很好.

然后我决定熟悉分支,所以我创建了一个分支.我在这个分支中做了很多改动.我已经提交了一段时间内的更改并执行了同步以将我的本地提交推送到visualstudio.com存储库.这一切都有效.

我遇到的问题是我不知何故失去了切换回主分支的能力.我无法将新创建的分支合并到主服务器中.每次我尝试做任何涉及主人的事情我都会在VS中收到以下错误:

无法切换到master,因为存在未提交的更改.在切换分支之前提交或撤消更改.有关详细信息,请参见输出窗口

"输出"窗口从不包含任何"详细信息"...

此消息所指的"未提交的更改"是什么?由于我无法进入主分支,因此我无法进行任何更改(我也不确定是否要这样做?).我所在的当前(唯一的)分支已经提交并同步.

我真的只是学习TFS,GIT和源代码控制.我如何安全地从这个问题中恢复?

git tfs visual-studio visual-studio-2013

33
推荐指数
3
解决办法
3万
查看次数

使用Simple Membership从MVC5项目中删除所有OWIN包是否安全?

我想清理我正在进行的项目.我们使用的是简单会员资格,无意使用Twitter,Google等支持身份验证.我对OWIN了解不多,但我发现默认安装了很多NuGet包.

卸载所有OWIN包是否安全?

asp.net-mvc owin

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

Request.Url.Host vs Request.Url.Authority

我继承了用C#编写的ASP.NET Web应用程序.在整个站点的许多页面中,使用以下命令检索主机名:

BaseHost = Request.Url.Host;
Run Code Online (Sandbox Code Playgroud)

由于我使用的是Visual Studio 2012 Express并且它安装了本地IIS Express服务器,因此当我在本地调试/运行时,似乎卡在了附加到主机名(localhost)的端口号.上面的代码不会导致包含端口号,因此会破坏由代码生成的链接(菜单项链接,重定向等).

我看到我可以通过将代码更改为:

BaseHost = Request.Url.Authority;
Run Code Online (Sandbox Code Playgroud)

这似乎是通过在我本地运行时(localhost:4652)包含端口以及发布到我的登台服务器(development.mysite.com)时修复它.

我的问题:这是不好的形式?是否有时间或情况会导致我的实际网站出现问题?快速替换所有这些实例似乎要容易得多.我考虑过编写一个小程序来追加: with Request.Url.Port,但它似乎更容易使用Request.Url.Authority.太容易了......

我试图在线和MSDN上研究我的问题,但我没有看到答案.

c# asp.net

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

当尝试将分支与TFS和GIT合并时,访问被拒绝写入VS项目.suo

我正在尝试将分支与主服务器合并.分支结构:

master
    v0.43
Run Code Online (Sandbox Code Playgroud)

我的重要变化是在v0.43.在v0.43中进行提交后,我尝试将v0.43合并到master.我收到以下错误:

发生错误.详细消息:libgit2引发了一个错误.类别=无效(错误).无法打开'C:/ Users/Me/Source/Repos /MyüProjectXX/ MyProProject XXX/XXX XXX X.v12.suo'进行写入:访问被拒绝.

"输出"窗格中没有其他信息.

我只是在尝试从v0.43分支更改为主分支时也收到上述错误消息.基本上,我被困在v0.43分支中.

请注意,"X"在实际项目名称中隐藏了字母字符.这些空间有效吗?ü有效吗?如果文件夹和文件名有效,并且特殊字符有效,为什么拒绝访问?或者合并是否需要访问此文件?

我知道它是一个Visual Studio用户设置文件.我很确定它不包含在GIT存储库中 - 尽管我只检查过:

git ls-files*.suo

没有文件返回.

此问题是否与TFS/GIT与Visual Studio或Windows中的设置之间的凭据冲突有关?顺便说一句,我在Win 8.1上运行VS 2013.2.

我无法确定GIT分支合并是否真的需要访问VS用户设置文件(.suo),或者是否甚至不需要访问此文件.如果确实需要访问权限,我可以尝试实现这一目标吗?如果根本不需要这种访问,为什么还要继续尝试?

编辑 - 附加信息

我是TFS/GIT的新手.吸收很多东西.当我最初设置存储库(visualstudio.com上的本地和TFS)时,默认的.gitignore由于某种原因没有被创建,显然是在我的本地存储库中?我不知道,但是当我对我的项目进行更改然后进行提交时,我看到的内容出现在"Excluded"和"Untracked"中.对于GIT/TFS是绿色的,我右键单击并包含这些Excluded/Untracked文件.我现在知道这是错的.

我想我已经从上述问题中恢复过来了.首先,我实现了一个默认的.gitignore,专门忽略/ bin和/ obj.然后我删除了这两个文件夹中的所有内容(通过VS Solution Explorer).他们没有回来作为包含,排除或未跟踪.这解决了一个问题.

下一期是我看到v0.43分支中包含项目的.suo.我看到它应该在默认的.gitignore(*.suo)中被忽略,因此我需要将它从v0.43分支中删除,但它并不像删除未使用的文件那么容易.我是从命令行使用以下命令完成的:

我能够看到.suo存在使用:

git ls-files *.suo
Run Code Online (Sandbox Code Playgroud)

我把它删除了:

git rm --cached "*.suo"
git commit -m "Delete *.suo file from repository"
Run Code Online (Sandbox Code Playgroud)

...我可以通过执行相同的ls-files命令确认它已被删除.它不再出现在v0.43分支中.我做了提交并与TFS同步.现在我收到上面提到的错误 - 每当我尝试将v0.43合并到master或甚至切换到master分支时,Access都被拒绝到.suo.

可能是我试图切换试图访问.suo文件的主分支?

如果是这样的话,我完全不知道如何解决这个问题.我想.suo有可能在某个时候被提交到主分支......但我不知道如何安全地访问主分支并从中删除.suo就像我对v0.43分支一样.

我希望这一切都有道理.:S

git tfs visual-studio

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

Chrome - 您要保存此密码吗?提示获取不正确的值

我有一个表单,允许用户在私人网站上请求帐户,但没有用户名字段.相反,此项目的规范要求用​​户输入其电子邮件地址和密码/确认密码.用户还可以输入其州和国家/地区的字段.

提交表单后,Chrome会显示一个提示,询问用户是否要保存密码,但会显示状态字段的值而不是电子邮件地址字段.(电子邮件地址是帐户的实际用户名).

我了解Chrome会遍历表单的字段,直到找到id = password的字段,然后它将遍历字段以查找id = username.由于我没有id = username的字段且Chrome与id = email无关,因此它似乎使用id = password字段之前的字段用于用户名.

如何强制Chrome使用id = email的字段作为用户名?

<form action="POST" src="#">
    <input id="email" type="text" />
    <input id="state" type="text" />
    <input id="country" type="text" />
    <input id="password" type="password" />
    <input id="confirmpassword" type="password" />

    <input type="submit" value="Request Account" />
</form>
Run Code Online (Sandbox Code Playgroud)

提交后,上述表单会触发Chrome提示:

Would you like to save this password?

Iowa             ********
Run Code Online (Sandbox Code Playgroud)

请注意,'Iowa'是输入id = state字段的任何值,当然这是错误的.

此时将id = email更改为id = username会很困难.是否有另一种方法来执行此操作并保持id = email?

forms google-chrome

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

如何将xml作为UTF-8而不是UTF-16返回

我正在使用序列化的例程<T>.它可以工作,但当下载到浏览器时,我看到一个空白页面.我可以在文本编辑器中查看页面源或打开下载,我看到xml,但它是UTF-16,我认为这是为什么浏览器页面显示空白?

如何修改序列化程序例程以返回UTF-8而不是UTF-16?

XML源返回:

<?xml version="1.0" encoding="utf-16"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <string>January</string>
  <string>February</string>
  <string>March</string>
  <string>April</string>
  <string>May</string>
  <string>June</string>
  <string>July</string>
  <string>August</string>
  <string>September</string>
  <string>October</string>
  <string>November</string>
  <string>December</string>
  <string />
</ArrayOfString>
Run Code Online (Sandbox Code Playgroud)

调用序列化程序的示例:

DateTimeFormatInfo dateTimeFormatInfo = new DateTimeFormatInfo();
var months = dateTimeFormatInfo.MonthNames.ToList();

string SelectionId = "1234567890";

return new XmlResult<List<string>>(SelectionId)
{
    Data = months
};
Run Code Online (Sandbox Code Playgroud)

串行器:

public class XmlResult<T> : ActionResult
{
    private string filename = DateTime.Now.ToString("ddmmyyyyhhss");

    public T Data { private get; set; }

    public XmlResult(string selectionId = "")
    {
        if (selectionId != "")
        {
            filename …
Run Code Online (Sandbox Code Playgroud)

c# xml utf-8 xml-serialization

12
推荐指数
2
解决办法
3万
查看次数

在调试期间使用转换的Web.config和IIS Express

我有一个具有多个解决方案配置的Visual Studio应用程序.每个配置都有一个Web.config转换文件.例如,Web.Debug.config,Web.Release.config等.

由于他们安装SQL Express的方式,我们还有一些开发这个项目的开发人员具有非标准的SQL Express实例名称,而不是让他们不断编辑Web.Debug.config以在他们的环境中运行我已经设置了一个解决方案配置他们每个人都将以下内容添加到.csproj文件的最底部.此代码的工作原理是它触发在VS/obj/Debug-DeveloperName /文件夹中创建Web.config和MyWebApp.dll.config.

转换后的.config文件很完美,但IIS Express仍然使用根Web.config(未转换).

有没有办法让IIS Express在本地调试时使用这些转换后的Web.config文件?

<UsingTask 
    TaskName="TransformXml"
    AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

<Target 
    Name="AfterCompile" 
    Condition="exists('Web.$(Configuration).config')">

    <!-- Generate transformed config in intermediate directory -->
    <TransformXml 
        Source="Web.config" 
        Destination="$(IntermediateOutputPath)$(TargetFileName).config"
        Transform="Web.$(Configuration).config" 
    />
</Target>
Run Code Online (Sandbox Code Playgroud)

使用Web应用程序的Web.Debug.Config适用于我们大多数人,但不是全部.

必须有一种方法可以让IIS Express在本地调试期间使用转换后的Web.Debug-DeveloperName.config吗?

是否必须将转换后的Web.config复制到其他文件夹中?

iis msbuild web-config visual-studio visual-studio-2012

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

如何在.draw()之后维护jQuery DataTables滚动位置

我正在为一个小表(12行)使用jQuery Datatables插件.某些<input type="text" ...字段允许编辑.当输入字段失去焦点时,我需要验证其值并可能更改字段值.我没有能够在不发出事件的情况下获得DataTables识别的修改输入字段值.draw(),但这会导致表格滚动到表格的顶部.

有没有办法在发出.draw()之后保持当前的滚动位置?

$('#mytable').on('blur', 'input', function (e) {

    var inputFieldId = this.id;
    var inputFieldVal = $(this).val();

    { ... perform validation of field value ... }

    $('#mytable').DataTable().rows().invalidate().draw();
});
Run Code Online (Sandbox Code Playgroud)

编辑

我看到有人试图做同样的事情,他们表示以下代码适用于他们.这似乎是一种完成我需要的非常简单的方法,但我总是自己得到scrollTop = 0.有人看到我如何获得当前所选行的行索引?

var scrollPos = $(".dataTables_scrollBody").scrollTop();
$('#mytable').DataTable().rows().invalidate().draw(false);
$(".dataTables_scrollBody").scrollTop(scrollPos);
Run Code Online (Sandbox Code Playgroud)

jquery datatables jquery-datatables

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

客户端<unknown>上的MQTT套接字错误

我在Raspberry Pi上设置了MQTT,并为代理配置了Arduino Uno,但我在/var/log/mosquitto/mosquitto.log文件中看到以下条目:

New connection from 192.168.10.114 on port 1883.
Socket error on client <unknown>, disconnecting.
Run Code Online (Sandbox Code Playgroud)

Pi设置为ETH0连接到我的本地LAN,IP地址为192.168.1.50

Pi上还有一个WiFi AP设置.Arduino Uno通过WiFi连接发送/接收MQTT消息.WiFi AP的IP地址为192.168.10.1,并通过提供DHCP租约dnsmasq.

我尝试在本地MQTT代理服务器(Pi)上发布和订阅测试并得到相同的错误:

Command:
mosquitto_sub -h 192.168.10.1 -t topic

mosquitto.log:
New connection from 192.168.10.1 on port 1883.
New client connected from 192.168.10.1 as mosqsub/1837-raspberryp (cl, k60).
Socket error on client <unknown>, disconnecting.
Run Code Online (Sandbox Code Playgroud)

这是/etc/mosquitto/mosquitto.conf:

pid_file /var/run/mosquitto.pid

persistence true
log_dest file /var/log/mosquitto/mosquitto.log

allow_anonymous true

include_dir /etc/mosquitto/conf.d
Run Code Online (Sandbox Code Playgroud)

sudo服务mosquitto停止sudo服务mosquitto开始:

mosquitto version 1.4.8 terminating
mosquitto version 1.4.8 (build date Sun, 14 Feb 2016 15:06:55 …
Run Code Online (Sandbox Code Playgroud)

linux mqtt raspberry-pi

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