我要从我的WCF Rest/Json服务切换到WebApi2,我正在寻找一种方法来映射这个方法:
[OperationContract]
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, UriTemplate = "Users?mail={mail}&pw={pw}")]
UserData getUserByEmailAndPw(String mail);
Run Code Online (Sandbox Code Playgroud)
我想通过电子邮件和密码查询用户,因此我无法使用打算使用ID的默认GET.据我所知,你应该通过Rest中的属性来做到这一点......
我是否只需要为此注册路线或者是否有更好的方法(可能按照惯例)?
我有一个里程日志应用程序,可以进行GPS跟踪,并能够在后台建立与汽车的OBDII连接.
现在我想显示一个Popup,告诉用户我的应用程序是否在打盹中没有列入白名单,因为这可能会停止我的后台(实际上是前景)服务...
我做:
String PACKAGE_NAME = getApplicationContext().getPackageName();
PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
boolean status = false;
status = pm.isIgnoringBatteryOptimizations(PACKAGE_NAME);
if (!status) {
// show popup
}
Run Code Online (Sandbox Code Playgroud)
但是PowerManager.isIgnoringBatteryOptimizations总是返回'true',即使它再次从'Not optimized apps'中删除.只有当我卸载应用程序'false'时才会再次返回...在Galaxy Note 8(Android 8.0)和Emulator 8.1上测试
问题很简单:这是一个错误吗?或者如何从白名单中删除应用程序,以便PowerManager.isIgnoringBatteryOptimizations再次返回'false'?
如果信号足够强,我的应用会创建一个adhoc连接.不幸的是,Android不允许多个WIFI网络,所以我必须断开当前的网络.当信号变弱时,我想重新连接到前一个.
我将以前连接的SSID存储在SharedPreference中,然后使用以下代码:
for (WifiConfiguration i : list) {
if (i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
wifiManager.disconnect();
wifiManager.enableNetwork(i.networkId, true);
boolean success = wifiManager.reconnect();
if (!success) {
wifiManager.reassociate();
}
}
}
Run Code Online (Sandbox Code Playgroud)
代码正在运行并WifiManger.reconnect();返回true但我没有连接到以前的网络.
这是我要重新连接的家庭网络的配置:
ID: 10 SSID: ""WLAN.Tele2.net"" BSSID: null FQDN: null REALM: null PRIO: 0
KeyMgmt: NONE Protocols: WPA RSN
AuthAlgorithms:
PairwiseCiphers: TKIP CCMP
GroupCiphers: WEP40 WEP104 TKIP CCMP
PSK:
Enterprise config:
password NULL
subject_match NULL
engine 0
client_cert NULL
ca_cert NULL
anonymous_identity NULL
phase1 NULL …Run Code Online (Sandbox Code Playgroud) 我有一个大型会员营销网站,在Windows Azure上托管了数百万种产品。对于SEO,我必须提供一个动态创建的sitemap.xml。
public ActionResult SiteMap()
{
string sitemapUrl = "https://trendley.blob.core.windows.net/sitemap/sitemap.xml";
byte[] bImage = null;
using (WebClient wc = new WebClient())
{
bImage = wc.DownloadData(sitemapUrl);
}
return File(bImage, "application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)
我将以下路由添加到我的RouteConfig中:
routes.MapRoute("Sitemap",
"sitemap.xml",
new { controller = "Home", action = "Sitemap" });
Run Code Online (Sandbox Code Playgroud)
不幸的是,这没有用。我得到-> HTTP错误404.0-找不到
当我将“ sitemap.xml”更改为sitemapxml(除去扩展名)时,将调用我的控制器方法。已经进行了一些研究并使用了我的web.config,但似乎没有任何效果。
我尝试的第一件事是添加:
<modules runAllManagedModulesForAllRequests="true" />
Run Code Online (Sandbox Code Playgroud)
第二件事:
<add
name="AdfsMetadata"
path="sitemap.xml"
verb="GET"
type="System.Web.Handlers.TransferRequestHandler"
preCondition="integratedMode,runtimeVersionv4.0" />
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何做到这一点。我是否需要为此编写自己的处理程序?
干杯,斯特凡
我使用以下代码将对象发送/接收到我的mvc控制器:
$.ajax({
url: _createOrUpdateTimeRecord,
data: JSON.stringify(data),
type: "POST",
//dataType: "json",
contentType: "application/json; charset=utf-8",
beforeSend: function () {
$("#loading-overlay").show();
},
success: function (data2) {
try { // tried to parse it manually to see if anything changes.
data2 = JSON.parse(data2);
}
catch (err) {
}
},
error: function (xhr, ajaxOptions, thrownError) {
alert(thrownError + 'xhr error -- ' + xhr.status);
}
Run Code Online (Sandbox Code Playgroud)
});
在我的mvc控制器上,我将JSON对象作为字符串,因此不需要.NET JavascriptSerializer和JsonResult。
我的JSON字符串如下所示:
data2 = "{title:'1111111',start:'2014-03-23T16:00:00.000',end:'2014-03-23T18:00:00.000',id:107,hdtid:1,color:'#c732bd',allDay:false,description:''}"
Run Code Online (Sandbox Code Playgroud)
而且我总是得到:“无效字符”
我已经尝试过返回一个字符串并在客户端手动解析JSON。因此,我使用ContentResult作为返回类型,但没有成功
public class JsonStringResult : ContentResult
{
public JsonStringResult(string json)
{
Content …Run Code Online (Sandbox Code Playgroud) 我的应用程序已在后台处理WIFI /蓝牙连接/断开连接,并根据这些事件执行后台任务。现在,我想对NFC做同样的事情,但是到目前为止,我发现的所有样本都在发现NFC标签时开始了一项活动。
我已经尝试为NDEF_DISCOVERED注册一个接收器,但是它不起作用...
<receiver android:name="com.mxp.time.receivers.NfcReceiver" >
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
实际上,我已经读过,由于android的后备策略,这是不可能的。到目前为止,我发现的唯一解决方案是在没有UI的情况下定义活动,并在连接的标签上进行轮询。我真的不喜欢这种技术,因为它需要保持此活动为打开状态,这会增加电池使用量
谁能帮我这个?
干杯,斯特凡
我正在使用此代码将我的视图加载到DialogFragment:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
SyncPopup syncPopup = new SyncPopup(getActivity(), this,_callback);
getDialog().requestWindowFeature(Window.FEATURE_NO_TITLE);
getDialog().getWindow().setSoftInputMode(STYLE_NO_INPUT);
getDialog().setCanceledOnTouchOutside(false);
return syncPopup;
}
Run Code Online (Sandbox Code Playgroud)
这段代码在我的自定义DialogFragment中.所以this指向DialogFragment.SyncPopup保存了我的所有视图逻辑.我正在使用这种模式,以便我可以在其他地方重用SyncPopup.
在我的SyncPopup中,我正在运行AsyncTask,onPostExecute我希望关闭DialogFragment.- >
_parentFragment通过构造函数注入,参见上面的代码(使用this指针).
SyncInfo si = new SyncInfo(email, Start, End);
new AsyncTask<SyncInfo, Void, String>() {
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
_callback.onSyncFinish();
_parentFragment.dismiss();
}
@Override
protected String doInBackground(SyncInfo... params) {
SyncInfo si = params[0];
return Cache.sync(si.Email, si.Start, si.End);
}
}.execute(si);
Run Code Online (Sandbox Code Playgroud)
我已经测试了这段代码,但在Google Analytics中,我看到了_parentFragment.dismiss();原因 - >IllegalStateException (@SyncPopup$8:onPostExecute:221) …